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

查找SQL表中缺少指定ShipConfirm事件的同OrderId/ProductId记录

解决方案

下面提供几种高效的SQL查询方法,帮你找出缺失ShipConfirm事件的OrderId和ProductId组合:

方法1:使用NOT EXISTS子查询

这是最直观的写法,通过子查询检查同一组合下是否存在目标事件:

SELECT DISTINCT OrderId, ProductId
FROM your_table_name t1
WHERE NOT EXISTS (
    SELECT 1
    FROM your_table_name t2
    WHERE t2.OrderId = t1.OrderId
      AND t2.ProductId = t1.ProductId
      AND t2.Event = 'ShipConfirm'
);
  • DISTINCT确保每个OrderId+ProductId组合只返回一次
  • 子查询验证当前组合是否存在ShipConfirm事件,不存在则被筛选出来

方法2:LEFT JOIN + IS NULL

通过左连接匹配目标事件,筛选未匹配到的记录:

SELECT DISTINCT t1.OrderId, t1.ProductId
FROM your_table_name t1
LEFT JOIN your_table_name t2
  ON t1.OrderId = t2.OrderId
  AND t1.ProductId = t2.ProductId
  AND t2.Event = 'ShipConfirm'
WHERE t2.OrderId IS NULL;
  • 左连接后,没有对应ShipConfirm事件的记录中,t2的字段会是NULL,以此作为筛选条件

方法3:GROUP BY + HAVING统计

通过分组统计目标事件的数量,筛选数量为0的组合:

SELECT OrderId, ProductId
FROM your_table_name
GROUP BY OrderId, ProductId
HAVING SUM(CASE WHEN Event = 'ShipConfirm' THEN 1 ELSE 0 END) = 0;
  • 按OrderId+ProductId分组,用CASE统计每个组内ShipConfirm的出现次数
  • 次数为0的组合即为缺失目标事件的记录

注意

请将上述代码中的your_table_name替换为你实际使用的表名。如果需要查看这些缺失组合的所有事件记录,可以将查询结果与原表关联查询。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 11:05:31