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

如何排除所有曾关联store_id=0的valueid对应的全部记录

问题核心逻辑说明

你之前的写法仅能过滤单条store_id=0的记录,无法将只要关联过一次store_id=0的valueid对应的所有记录全部剔除,核心需要先识别所有关联过store_id=0的valueid,再全局排除这些valueid的所有行。

实现方案

方案1:NOT IN子查询(最易理解)

SELECT valueid, store_id
FROM 你的表名
WHERE valueid NOT IN (
    SELECT DISTINCT valueid
    FROM 你的表名
    WHERE store_id = 0
);

子查询先查出所有关联过store_id=0的valueid,外层查询直接排除这些valueid即可得到预期结果。

方案2:LEFT JOIN关联排除(部分场景性能更优)

SELECT t1.valueid, t1.store_id
FROM 你的表名 t1
LEFT JOIN (
    SELECT DISTINCT valueid
    FROM 你的表名
    WHERE store_id = 0
) t2 ON t1.valueid = t2.valueid
WHERE t2.valueid IS NULL;

通过左连接匹配关联过store_id=0的valueid,匹配不到的就是符合要求的记录。

方案3:窗口函数(支持窗口函数的SQL引擎适用)

SELECT valueid, store_id
FROM (
    SELECT 
        valueid,
        store_id,
        MAX(CASE WHEN store_id = 0 THEN 1 ELSE 0 END) OVER (PARTITION BY valueid) AS has_zero_tag
    FROM 你的表名
) t
WHERE has_zero_tag = 0;

给每个valueid打标签,只要该valueid下存在store_id=0的记录,标签就为1,过滤标签为0的即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 11:36:04