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

如何按CheckoutId分组实现NOT IN批量筛选SQL查询?

解决方案:按CheckoutId批次排除包含目标ProductId的行

要实现你的需求,核心是先找出所有包含ProductId=2345的CheckoutId,然后排除这些批次下的所有行,只保留完全不包含目标ProductId的CheckoutId对应的记录。以下是两种可行的SQL写法:

方法1:使用NOT IN子查询

SELECT *
FROM CHECKOUTS
WHERE CheckoutId NOT IN (
    -- 先找出所有包含ProductId=2345的CheckoutId
    SELECT DISTINCT CheckoutId
    FROM CHECKOUTS
    WHERE ProductId = 2345
);

方法2:使用LEFT JOIN过滤

如果你的表数据量较大,这种写法通常性能更优:

SELECT c.*
FROM CHECKOUTS c
LEFT JOIN (
    SELECT DISTINCT CheckoutId
    FROM CHECKOUTS
    WHERE ProductId = 2345
) excluded_checkouts ON c.CheckoutId = excluded_checkouts.CheckoutId
WHERE excluded_checkouts.CheckoutId IS NULL;

逻辑说明

  • 子查询excluded_checkouts会筛选出所有包含Toy1(ProductId=2345)的CheckoutId
  • 外层查询只保留不在这个排除列表里的CheckoutId对应的行,这样Toy2所在的批次因为包含目标ProductId被整体排除,最终只返回Toy3的记录

针对你的问题:

  • 完全可行,不需要新增查询参数,只需要调整查询逻辑,从过滤单个ProductId改为过滤整个包含目标ProductId的CheckoutId批次即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 19:10:26