3

我对为什么以下 SQL 语句返回一行感到困惑:

#MySQL
select max(1) from dual where 0 = 1

#SQLite
select max(1) where 0 = 1 

我真的对这个结果感到困惑。任何人都可以对这种行为有所了解吗?

提前致谢!

4

3 回答 3

3

max没有 a的聚合group by总是返回一行。如果底层的行集为空,它将返回一个带有null. 否则,它将返回您指定的列的最大值。

where子句影响计算最大值的行。它不会改变查询必须返回最大值的事实。

于 2012-11-09T10:27:44.267 回答
1

因为 MAX 是一个标量函数,所以它需要返回一个结果,而不是一个表结果查询。

于 2012-11-09T10:27:32.853 回答
0

它返回最大值(在没有匹配行的情况下返回 NULL),因此返回的单行似乎是合乎逻辑的

http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_max

于 2012-11-09T10:27:18.863 回答