是否可以执行SELECT * FROM table WHERE x1,x2 IN (values)
?
答案 0 :(得分:4)
如果您需要成对匹配:
SELECT *
FROM table
WHERE (x1, x2) IN ((1, 2), (3, 4))
仅匹配1, 2
或3, 4
如果您需要交叉匹配:
SELECT *
FROM table
WHERE x1 IN (1, 3)
AND x2 IN (2, 4)
将匹配1, 2
,3, 2
,1, 4
或3, 4
答案 1 :(得分:3)
我不相信这是可能的 - 你只需要说明......
SELECT * FROM table WHERE (x1 IN (values) OR x2 IN (values)) ..
或
SELECT * FROM table WHERE (x1 IN (values) AND x2 IN (values)) ..
......取决于您需要的逻辑。
答案 2 :(得分:2)
应该是这样的
SELECT * FROM table WHERE (x1,x2) IN ((value1,value2), (value3,value4));
你甚至可以这样做:
SELECT * FROM table WHERE (x1,x2) IN (SELECT x3,x4 FROM another_table);
当然,x3,x4必须分别匹配x1,x2的数据类型。
答案 3 :(得分:1)
根据你的意思,你必须写
... WHERE x1 IN (values) AND x2 IN (values)
... WHERE x1 IN (values) OR x2 IN (values)
但你必须复制值列表