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

如何在SQL中对Sales表设置多ID排除的过滤条件?

解决方法:一次性排除多个ID的SQL语句

嗨,这个问题很好解决!你已经设置了Date晚于2017-01-01的过滤条件,现在要同时排除指定的ID,最简洁的方式是用NOT IN子句,把要排除的ID放在括号里就行。

完整SQL示例

SELECT Date, ID, Sales
FROM Sales
WHERE Date > '2017-01-01'
  AND ID NOT IN (12, 53, 68, 98, 150);

为什么这么写?

  • NOT IN (12,53,...)会直接排除所有ID匹配括号里值的记录,比写一堆ID != 12 AND ID !=53...要高效易读得多。
  • 注意日期格式:如果你的数据库对日期格式有严格要求(比如SQL Server可能需要用'20170101'或者转换函数),可以根据自己的数据库调整,但核心逻辑不变。

另一种备选方案:NOT EXISTS(适合复杂场景)

如果你的ID字段可能存在NULL值,或者需要关联其他表的话,NOT EXISTS是更安全的选择:

SELECT s.Date, s.ID, s.Sales
FROM Sales s
WHERE s.Date > '2017-01-01'
  AND NOT EXISTS (
    SELECT 1 
    FROM (VALUES (12), (53), (68), (98), (150)) AS excluded(ID)
    WHERE excluded.ID = s.ID
  );

这个写法在处理NULL或者大数据集时表现更稳定,但对于你的简单场景,NOT IN完全够用啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:55:37