user5093601
user5093601

Reputation:

How are the following SQL commands different from each other?

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

Answers (1)

Lukasz Szozda
Lukasz Szozda

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);

SqlFiddleDemo

Then your both queries are equivalent.


But I prefer the first query syntax if values are known in advance:

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

Related Questions