聚合SQLite函数-意外结果

聚合SQLite函数-意外结果,sqlite,Sqlite,此sqlite查询按预期返回零行: SELECT 1 FROM tbl WHERE 0; 另一方面,此查询返回一行,其中包含空列: SELECT MAX(1) FROM tbl WHERE 0; 为什么第二个查询返回一行而不是零行?'Normal'查询在FROM子句中为表的每个(过滤的)记录返回一个结果 但是,当您使用某个聚合函数时,源表中的每个组的结果都有一条记录。如果没有GROUPBY子句,整个表就是一个组 使用GROUP BY时,空组没有结果。 但是,如果没有GROUPBY,则始终只有

sqlite
查询按预期返回零行:

SELECT 1 FROM tbl WHERE 0;
另一方面,此查询返回一行,其中包含空列:

SELECT MAX(1) FROM tbl WHERE 0;

为什么第二个查询返回一行而不是零行?

'Normal'查询在FROM子句中为表的每个(过滤的)记录返回一个结果

但是,当您使用某个聚合函数时,源表中的每个组的结果都有一条记录。如果没有GROUPBY子句,整个表就是一个组

使用GROUP BY时,空组没有结果。 但是,如果没有GROUPBY,则始终只有一个组并获得一条结果记录,即使该组最终为空

如果您的查询同时使用GROUP BY(具有一个常量值,该常量值将把所有记录(如果有)放入一个组中),那么MAX将得到零行:

SELECT MAX(1) FROM tbl WHERE 0 GROUP BY NULL;