SQL返回始终为false的条件的结果

时间:2012-11-09 10:21:44

标签: mysql sql sqlite

我对以下SQL语句返回一行的原因感到困惑:

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

#SQLite
select max(1) where 0 = 1 

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

提前致谢!

3 个答案:

答案 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