You need to enable JavaScript to run this app. SQL中使用NOT IN条件筛选符合指定部门编码要求的产品ID
优惠活动
大模型
产品
解决方案
定价
更多

SQL中使用NOT IN条件筛选符合指定部门编码要求的产品ID

实现SQL语句

假设你的业务表名称为product_dept,如果字段名包含空格,可根据你使用的数据库调整标识符包裹规则(MySQL用反引号、SQL Server用方括号、Oracle用双引号),符合要求的SQL如下:

SELECT DISTINCT pd1.Productid
FROM product_dept pd1
-- 自关联筛选同时存在422和440部门编码的产品
INNER JOIN product_dept pd2 
    ON pd1.Productid = pd2.Productid
    AND pd1.`Dept cd` = 422
    AND pd2.`Dept cd` = 440
-- 使用要求的NOT IN条件排除存在248部门编码的产品
WHERE pd1.Productid NOT IN (
    SELECT DISTINCT Productid
    FROM product_dept
    WHERE `Dept cd` = 248
);

逻辑说明

  • 自关联逻辑:通过同表关联筛选出同时对应部门编码422和440的所有Productid,初始筛选结果为123、1234、12
  • NOT IN过滤逻辑:先查询出所有对应部门编码248的Productid(此处只有123),最终排除这部分产品后得到的结果就是1234、12,和预期结果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 20:45:01