Sqlite:当 DB 为空时,为什么 'select min(time) from asdftable' 返回一个空行?

标签 sql sqlite

这很奇怪。我有一个空的 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

nullmin,因为 0count,其中不返回任何行。

这可能是一个有用的属性。考虑以下示例:

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/

相关文章:

java - sqlite 数据库连接 : java. Lang.ClassNotFoundException : org. sqlite.JDBC

python - sqlite3.操作错误: near "........": syntax error

SQLite3 : Insert BLOB with NULL characters in C++

sql - 如何在 LINUX 中的 DBMS_OUTPUT.put_line 中添加换行符

Mysql查询包含

php mysql查询语法

c++ - 在 C/C++ 中导出 .sqlite 文件(在 Windows 上)

c# - 如何在 UWP 的 `sqlite-net-pcl` 中使用 REGEXP

mysql - Node.js - 插入添加 0 而不是字符串

php - 用于照片共享社交应用程序(如 Instagram)的 Mysql 查询字符串