我对为什么以下 SQL 语句返回一行感到困惑:
#MySQL
select max(1) from dual where 0 = 1
#SQLite
select max(1) where 0 = 1
我真的对这个结果感到困惑。任何人都可以对这种行为有所了解吗?
提前致谢!
max
没有 a的聚合group by
总是返回一行。如果底层的行集为空,它将返回一个带有null
. 否则,它将返回您指定的列的最大值。
该where
子句影响计算最大值的行。它不会改变查询必须返回最大值的事实。
因为 MAX 是一个标量函数,所以它需要返回一个结果,而不是一个表结果查询。
它返回最大值(在没有匹配行的情况下返回 NULL),因此返回的单行似乎是合乎逻辑的
http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_max