Reputation:
SQL statment1:
SELECT * FROM table_x WHERE (coloumn1,coloumn2) in (1,2);
SQL statment2:
SELECT * FROM table_x WHERE (coloumn1,coloumn2) in (SELECT 1,2 FROM DUAL);
Upvotes: 1
Views: 50
Reputation: 175726
Main difference: first query has incorrect syntax and does not work. Second works.
Your first statements needs extra brackets:
SELECT * FROM table_x WHERE (coloumn1,coloumn2) in ((1,2));
<=>
SELECT * FROM table_x WHERE (coloumn1,coloumn2) in (SELECT 1,2 FROM DUAL);
Then your both queries are equivalent.
WHERE (coloumn1,coloumn2) in ((1,2), (3,4))
vs
WHERE (coloumn1,coloumn2) in (SELECT 1,2 FROM DUAL UNION ALL SELECT 3,4 FROM dual)
Upvotes: 4