此sqlite
查询按预期返回零行:
SELECT 1 FROM tbl WHERE 0;
另一方面,此查询返回包含空列的一行:
SELECT MAX(1) FROM tbl WHERE 0;
为什么第二个查询返回一行而不是零行?
答案 0 :(得分:1)
'Normal'查询为FROM子句中表的每个(已过滤)记录返回一个结果。
但是,当您使用某些聚合函数时,结果在源表中为每个组创建一条记录。如果没有GROUP BY子句,整个表就是一个组。
使用GROUP BY时,空组没有结果。 但是,如果没有GROUP BY,您总是只有一个组并获得一个结果记录,即使该组最终为空。
如果你的查询也使用GROUP BY(使用常量值,将所有记录(如果有的话)放入一个组中),那么你的查询将获得零行MAX:
SELECT MAX(1) FROM tbl WHERE 0 GROUP BY NULL;