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

Android Room/SQLite含min()查询无匹配时返回空结果的实现

在SQLite/Android Room中解决聚合函数返回全null行的问题

当查询中包含min()这类聚合函数时,即便WHERE条件没有匹配到任何记录,SQLite也会返回一行所有列均为null的结果——这是聚合函数的默认行为:对空数据集执行聚合操作时,仍会生成一条统计结果行。

要实现无匹配条目时直接返回空结果,且用简洁的单查询(无需子查询),可以通过HAVING子句过滤聚合后的结果:

SELECT id, data, min(time) FROM MyTable WHERE id = 123 HAVING COUNT(*) > 0

原理说明:

  • COUNT(*)用于统计WHERE条件匹配到的记录总数,当无匹配时结果为0
  • HAVING子句在聚合操作完成后执行过滤逻辑,COUNT(*) > 0会直接排除掉无匹配时生成的全null行,最终返回空结果集

这个写法完全兼容SQLite以及Android Room Library,满足你对简洁单查询的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 16:32:13