【发布时间】:2019-03-02 00:44:46
【问题描述】:
在空表上应用 SQL 聚合函数(COUNT、MAX 等)时,我希望得到一个空结果集(无行)以简化 ORM 中的处理。
当前,特殊返回值(0 用于 COUNT,NULL 用于所有其他聚合)are returned(假设为空表 user):
sqlite> SELECT COUNT(id) FROM user;
count(id)
0
我知道使用GROUP BY 加上HAVING 子句过滤空结果的技巧,但这相当麻烦,我不确定性能:
sqlite> SELECT COUNT(id) FROM user GROUP BY 1=1 HAVING COUNT(id) > 0;
sqlite>
因此问题:
- 如果源表为空,是否可以禁用聚合函数返回一行?
- 使用适用于所有条目的 GROUP BY 子句是否会影响性能?
【问题讨论】:
-
sqlite 不支持没有 GROUP BY 的 HAVING(至少)。我想知道更多关于源集很大时对性能的影响。