2012-11-09 78 views
3

我爲什麼下面的SQL語句返回一行困惑:SQL返回結果爲始終爲假條件

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

#SQLite 
select max(1) where 0 = 1 

我真搞不清楚這個結果。任何人都可以請說明這種行爲?

在此先感謝!

回答

3

max一個聚集沒有group by總是返回一行。如果底層行集是空的,它會返回null一行。否則,它將返回您指定的列的最大值。

where子句影響的行的最大用於計算。它不會改變查詢必須返回最大值的事實。

1

因爲MAX是一個標量函數,所以它需要返回結果,而不是表結果查詢。