You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多列组合值查询用IN报错、用=正常?求正确SQL语法

多列多值匹配的正确SQL语法

你遇到的错误是因为部分数据库(比如DB2,从错误码SQL0104判断大概率是该数据库)不支持行构造器直接用于IN子句的语法,以下是两种可行的替代方案:

  • 方案一:用OR连接多组条件(兼容性最强)
    直接把每组列值匹配的条件用OR拼接,几乎所有数据库都支持这种写法:

    SELECT *
    FROM myTable
    WHERE (col1 = value1 AND col2 = value2 AND col3 = value3)
       OR (col1 = value5 AND col2 = value6 AND col3 = value7);
    
  • 方案二:通过VALUES子句+JOIN实现(适合多组匹配场景)
    如果你使用的数据库支持VALUES子句(比如DB2 11.1及以上版本、PostgreSQL等),可以用这种更简洁的写法:

    SELECT t.*
    FROM myTable t
    JOIN (
        VALUES (value1, value2, value3),
               (value5, value6, value7)
    ) AS vals(c1, c2, c3)
    ON t.col1 = vals.c1 
    AND t.col2 = vals.c2 
    AND t.col3 = vals.c3;
    

注意:如果匹配的是字符串类型的值,需要给值加上单引号,例如'value1',避免语法错误。

内容的提问来源于stack exchange,提问作者Claudette

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 12:50:22