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

SQLite使用SUM()无满足条件行时如何不返回结果 避免返回NULL行

问题原因

你当前的查询使用了聚合函数SUM()但未指定GROUP BY子句,按照SQLite的规则,无GROUP BY的聚合查询哪怕没有匹配到任何数据行,也会默认返回1行聚合结果,因此当查询的id不存在时,就会返回SUM值为NULL、name为NULL的无效行。

解决方法

有两种常用的修改方案,都可以实现「id不存在时无返回行」的需求:

方案1:添加GROUP BY子句(更符合业务逻辑)

因为查询关联了客户表,按客户维度分组即可,没有匹配的客户时分组结果为空,自然不会返回任何行:

SELECT SUM(tMoney.money), tCustomer.name 
FROM tMoney 
JOIN tCustomer ON tMoney.id = tCustomer.id 
WHERE tCustomer.id = 3
GROUP BY tCustomer.id, tCustomer.name;

方案2:添加HAVING过滤条件

如果不需要分组,也可以直接过滤掉SUM结果为NULL的情况:

SELECT SUM(tMoney.money), tCustomer.name 
FROM tMoney 
JOIN tCustomer ON tMoney.id = tCustomer.id 
WHERE tCustomer.id = 3
HAVING SUM(tMoney.money) IS NOT NULL;

验证效果

  • 当查询id=1时,两种方案都会正常返回sum结果360、name为bob的行
  • 当查询id=3时,两种方案都不会返回任何行,符合需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 15:27:00