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

基于第二列条件筛选数据:排除包含Green的ID

正确筛选方案:排除所有包含Green的ID的全部记录

你的原SQL语句WHERE colors_allowed != 'Green'仅会过滤掉单条颜色为Green的行,但如果同一个ID存在其他颜色的记录,这些记录依然会被返回——这和你“排除所有包含Green的ID”的需求不符。要实现需求,需要先定位所有存在至少一条Green记录的ID,再排除这些ID的全部数据,以下是几种可行方案:

方案1:使用NOT IN子查询

先通过子查询找出所有包含Green的ID,再在主查询中排除这些ID:

SELECT *
FROM Table
WHERE ID NOT IN (
    SELECT ID
    FROM Table
    WHERE colors_allowed = 'Green'
)

方案2:使用LEFT JOIN筛选无匹配的ID

通过左连接关联有Green记录的ID集合,筛选出未匹配到的ID(即没有Green记录的ID):

SELECT t.*
FROM Table t
LEFT JOIN (
    SELECT DISTINCT ID
    FROM Table
    WHERE colors_allowed = 'Green'
) g ON t.ID = g.ID
WHERE g.ID IS NULL

方案3:使用NOT EXISTS子查询

检查当前ID是否存在Green记录,仅保留不存在该记录的ID数据:

SELECT *
FROM Table t
WHERE NOT EXISTS (
    SELECT 1
    FROM Table
    WHERE ID = t.ID
      AND colors_allowed = 'Green'
)

说明

三种方案本质都是先识别出所有“沾过Green”的ID,再整体排除这些ID的所有行,这样就能彻底移除555、888这类包含Green的ID的全部记录,符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 14:57:08