Postgres中多列使用IN子句的正确语法是什么?
Postgres合并多条件查询的正确语法
你遇到的语法错误来自两个问题:
- Postgres中
IN子句的集合必须用小括号()包裹,而非大括号{}; - 集合内最后一个元组后不能保留多余的逗号。
正确的合并语句
select * from t1 where (type, idt, date) in ( (57, 2001, 1), (59, 2001, 1), (57, 2002, 3), (57, 2001, 2), (59, 2002, 1) );
补充说明
这种多列匹配的IN语法是Postgres支持的标准写法,和你原本的多条查询逻辑完全一致,能高效筛选出满足任意一组(type, idt, date)条件的记录。
内容的提问来源于stack exchange,提问作者Tms91
相关产品推荐
相关产品推荐

