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

SQL逻辑求助:筛选含指定值且排除特定值的MyTable记录

解决MyTable的筛选需求

没问题,我来帮你搞定这个SQL查询需求。先拆解一下你的要求:我们需要从MyTable里找出那些C1、C2、C3列的取值都属于111、222、444,同时绝对不能有任何一列包含333的记录。

对应的SQL查询语句

SELECT *
FROM MyTable
WHERE 
    -- 第一步:排除任一列包含333的记录
    C1 != 333 
    AND C2 != 333 
    AND C3 != 333
    -- 第二步:确保C1、C2、C3的每个值都在目标集合里
    AND C1 IN (111, 222, 444)
    AND C2 IN (111, 222, 444)
    AND C3 IN (111, 222, 444);

逻辑说明

  1. 排除333的条件:用C1 !=333 AND C2 !=333 AND C3 !=333直接过滤掉所有带有333的记录,保证结果里没有任何一列是333。
  2. 限制取值范围:通过IN条件约束三个列的取值只能是你指定的111、222、444,这样就确保了所有符合条件的记录,三个列的值都在目标集合内。

匹配的结果记录

根据你提供的原表数据,执行上述查询后会得到以下3条记录:

  • ID: 4 | C1:444 | C2:111 | C3:222
  • ID: 6 | C1:111 | C2:222 | C3:111
  • ID:10 | C1:444 | C2:111 | C3:222

补充:如果需求是“至少有一列是目标值”

如果你的真实需求是记录中至少有一列是111/222/444,同时没有任何一列是333(而非所有列都属于目标值),可以用下面的查询:

SELECT *
FROM MyTable
WHERE 
    C1 != 333 
    AND C2 != 333 
    AND C3 != 333
    AND (C1 IN (111, 222, 444) OR C2 IN (111, 222, 444) OR C3 IN (111, 222, 444));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:52:56