示例
示例
SELECT * FROM t
WHERE (city, status) IN (('Beijing', 1), ('Shanghai', 2));
SELECT * FROM t WHERE (a, b) = (1, 2);| 等价改写 | (a,b) IN ((1,2),(3,4)) 即 (a=1 AND b=2) OR (a=3 AND b=4) |
|---|---|
| 支持 | MySQL 与 PostgreSQL 均支持行构造器 |
| 比较规则 | 按从左到右的顺序逐列比较 |
把多个列当作一个元组参与 IN 或等值比较,表达“多列组合命中多个候选项”比 OR 链更短更清晰。
SELECT * FROM t
WHERE (city, status) IN (('Beijing', 1), ('Shanghai', 2));
SELECT * FROM t WHERE (a, b) = (1, 2);| 等价改写 | (a,b) IN ((1,2),(3,4)) 即 (a=1 AND b=2) OR (a=3 AND b=4) |
|---|---|
| 支持 | MySQL 与 PostgreSQL 均支持行构造器 |
| 比较规则 | 按从左到右的顺序逐列比较 |