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

为何统计不存在的数据时两种SQL查询方法返回结果不同?

为何两种统计不存在数据项的方法结果有差异?

假设我有一个包含1000行数据的表,使用以下两种方法统计不存在的数据项时,结果出现了差异:

方法1

执行SQL语句:

select count(*)=0 from domains where id=8888;

查询结果:

?column? 
----------
 t
(1 row)

方法2

执行SQL语句:

select count(*)=0 from domains limit 1 offset 8888;

查询结果:

?column? 
----------
(0 rows)

差异原因

这两个方法的逻辑完全不同,导致结果天差地别:

  • 方法1的逻辑:通过where id=8888精准筛选id为8888的记录,再用count(*)统计匹配到的行数。因为表只有1000行,id=8888的记录不存在,count(*)返回0,0=0的判断结果为真(t)。而且count(*)函数的特性是哪怕没有匹配行,也会返回一个数值结果,所以查询始终会输出1行结果。
  • 方法2的逻辑:offset 8888是跳过前8888行,再用limit 1取1行。但表总共只有1000行,跳过8888行后已经没有剩余数据了,整个查询没有返回任何行数据,自然也就不会生成count(*)=0的判断结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 14:04:57