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);
答案 0 :(得分:4)
主要区别:第一个查询语法不正确,不起作用。第二部作品。
您的第一个陈述需要额外的括号:
SELECT * FROM table_x WHERE (coloumn1,coloumn2) in ((1,2));
<=>
SELECT * FROM table_x WHERE (coloumn1,coloumn2) in (SELECT 1,2 FROM DUAL);
的 SqlFiddleDemo
强>
然后你的两个查询都是等价的。
<小时/> 但如果预先知道值,我更喜欢第一种查询语法:
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)