2014-10-16 49 views

回答

0

爲什麼這個查詢有一個錯誤在Oracle和MySQL中是正確的

由於MySQL是一種寬容約集料和非集合列。

引述the documentation

在標準的SQL,包括GROUP BY子句中不能引用非聚合列在未在GROUP BY子句中命名的選擇列表中查詢。

[...]

MySQL的擴展使用GROUP BY的,這樣的選擇列表可參考在GROUP BY子句中未命名的非聚合列。

[...]

主要當在GROUP BY未命名每個非聚集列中的所有值都爲每個組相同的,這是有用的。 服務器可以自由選擇每個組中的任何值,因此除非它們相同,否則所選值不確定

0

(select sum(total) FROM invoices)是一個表達式,它不是一個聚合函數,它並沒有在GROUP BY存在,因此你想混合骨料和無 - (其實你不能在GROUP BY使用子查詢)

彙總表達式。

0

如果您正在尋找在甲骨文工作版本,你可以這樣做:

select sum(total) + sum(total) 
from invoices; 
+1

這將是MySQL的一個更好的解決方案,以及。 – 2014-10-17 13:15:33