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

添加WHERE子句结果异常,如何正确排除CAT_COD=10的条目?

SQL查询问题分析与解决

为什么没只移除17条数据?

你写错了过滤条件:你加的WHERE EMP.CAT_COD <> 16是排除所有CAT_COD不等于16的记录,相当于只保留CAT_COD=16的数据,这自然会过滤掉大量其他条目,和你要排除的17条CAT_COD=10的记录完全无关。

另外补充一点:就算你写对条件,最终移除的记录数也可能不是刚好17条——因为原查询是INNER JOIN,这17条CAT_COD=10的记录里,可能有部分在DIM表中没有匹配的关联数据,所以它们本来就没出现在原查询的5,597,154条结果里,实际过滤掉的会是原结果中存在的CAT_COD=10的记录数。

正确排除CAT_COD=10条目的写法

方法一:在WHERE子句中过滤

直接把条件改成排除CAT_COD=10的记录:

SELECT EMP.*, DIM.GENDER
FROM Table1 as EMP
    JOIN Table2 as DIM 
        ON EMP.M_COD=DIM.M_COD
        AND EMP.ID=DIM.ID
WHERE EMP.CAT_COD <> 10;

如果CAT_COD可能为NULL,<>10不会排除NULL值,这时可以写成:

WHERE EMP.CAT_COD <> 10 OR EMP.CAT_COD IS NULL;

或者更明确的写法:

WHERE NOT (EMP.CAT_COD = 10);

方法二:提前过滤EMP表(可能更高效)

在关联前就过滤掉CAT_COD=10的记录,减少关联的数据量:

SELECT EMP.*, DIM.GENDER
FROM (SELECT * FROM Table1 WHERE CAT_COD <> 10) as EMP
    JOIN Table2 as DIM 
        ON EMP.M_COD=DIM.M_COD
        AND EMP.ID=DIM.ID;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 10:18:37