我爲什麼下面的SQL語句返回一行困惑:SQL返回結果爲始終爲假條件
#MySQL
select max(1) from dual where 0 = 1
#SQLite
select max(1) where 0 = 1
我真搞不清楚這個結果。任何人都可以請說明這種行爲?
在此先感謝!
我爲什麼下面的SQL語句返回一行困惑:SQL返回結果爲始終爲假條件
#MySQL
select max(1) from dual where 0 = 1
#SQLite
select max(1) where 0 = 1
我真搞不清楚這個結果。任何人都可以請說明這種行爲?
在此先感謝!
像max
一個聚集沒有group by
總是返回一行。如果底層行集是空的,它會返回null
一行。否則,它將返回您指定的列的最大值。
的where
子句影響的行的最大用於計算。它不會改變查詢必須返回最大值的事實。
據其返回的最大值(或NULL中沒有匹配行的情況下),所以返回單行似乎是合乎邏輯
http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_max
因爲MAX是一個標量函數,所以它需要返回結果,而不是表結果查詢。
很抱歉,但它似乎不符合邏輯的我,這就是爲什麼我問:) – m0skit0