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