这很奇怪。我有一个空的 SQLite 数据库。
当我执行 select min(time) from asdftable
时,我得到一个空白行。当我执行 select time from asdftable
时,我什么也没得到(这是正确的)。
知道这是为什么吗?
最佳答案
聚合函数即使没有找到任何东西都会返回一些东西,这仅仅是因为它们隐式地对表中的所有(任何)行进行分组以获得聚合值。以count
为例:
sqlite> create table foo (a int not null);
sqlite> select count(a) from foo;
0
null
是 min
,因为 0
是 count
,其中不返回任何行。
这可能是一个有用的属性。考虑以下示例:
sqlite> select ifnull(min(a), "I'm null") from foo;
I'm null
如果您想过滤这种情况以便不返回任何记录,您可以使用 having 子句(并明确分组):
sqlite> select min(a) as min_a from foo group by a having min_a not null;
关于Sqlite:当 DB 为空时,为什么 'select min(time) from asdftable' 返回一个空行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7945687/