首页/数据/SQL 速查/行构造器比较 (a, b) IN ((…),(…))
本包目录(311 条)

行构造器比较 (a, b) IN ((…),(…))

把多个列当作一个元组参与 IN 或等值比较,表达“多列组合命中多个候选项”比 OR 链更短更清晰。

SQL 速查数据更新于 2026-10-12

示例

示例
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 均支持行构造器
比较规则按从左到右的顺序逐列比较

易错点

  • 每行元素个数必须与左侧列数一致,列数不匹配会直接语法错误
  • 行比较在部分版本上索引利用弱于展开的 AND/OR 写法,重要查询用 EXPLAIN 对比确认

数据来源与参考

  • MySQL 8.0 Reference Manual · Row Constructor Expressions
  • PostgreSQL Documentation · Row Constructors
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌