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

为何过滤op列时NULL值被排除?两次SQL查询结果差异疑问

为什么第二条SQL查询中op的NULL值被省略?

这是SQL中NULL值的逻辑比较特性导致的:

  • 在SQL里,NULL代表“未知值”,当你用op != 'D'进行比较时,如果op是NULL,这个比较的结果既不是TRUE也不是FALSE,而是UNKNOWN。
  • WHERE子句只会保留条件计算结果为TRUE的行,所有结果为UNKNOWN或FALSE的行都会被过滤。

对应你的两条查询:

  1. 第一条查询没有op != 'D'的过滤条件,所以op为NULL且满足r=1的行能进入分组统计,结果里会包含NULL值的计数。
  2. 第二条查询添加了op != 'D',此时op为NULL的行因为比较结果是UNKNOWN,不满足WHERE的筛选要求,被直接过滤掉,最终分组结果自然就没有NULL值的统计项了。

如果需要保留op为NULL的行同时排除op='D'的行,可以修改条件为:

where r = 1 and (op != 'D' or op is null)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 23:19:51