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

Oracle SQL求助:查找缺失的Item-DC关联记录

问题分析与解决方案

你写的SQL存在几个关键问题:

  • 逻辑矛盾:WHERE子句同时指定DC = 'DC1'和NOT EXISTS (SELECT * FROM SKU WHERE DC = 'DC1'),前者限定只查DC1的记录,后者要求不存在DC1的记录,两个条件无法同时满足,自然查不到结果。
  • 子查询未关联主表:NOT EXISTS里的子查询没有和主表的Item关联,无法针对每个Item判断是否存在DC1的关联记录。
  • 语法错误:子查询末尾缺少闭合的)。

正确SQL写法

方法1:使用NOT EXISTS关联Item

SELECT DISTINCT s.Item
FROM SKU s
WHERE s.Warehouse IN ('WH-A','WH-B','WH-C')
AND NOT EXISTS (
    SELECT 1 
    FROM SKU s2 
    WHERE s2.Item = s.Item 
    AND s2.DC = 'DC1'
)

解释:

  • 主表筛选出Warehouse在目标范围内的所有记录,通过DISTINCT确保每个Item只返回一次。
  • 子查询关联主表的Item,判断该Item是否存在DC1的关联记录,NOT EXISTS就表示这个Item没有配置DC1。

方法2:使用分组筛选

SELECT Item
FROM SKU
WHERE Warehouse IN ('WH-A','WH-B','WH-C')
GROUP BY Item
HAVING SUM(CASE WHEN DC = 'DC1' THEN 1 ELSE 0 END) = 0

解释:

  • 先按Item分组,统计每个Item下DC1的记录数。
  • HAVING子句筛选出DC1记录数为0的Item,也就是未配置DC1的Item。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 20:25:55