爲什麼這個查詢在Oracle中有錯誤,但在MySQL中是正確的?沒有一個單組函數oracle與子查詢總和
SELECT (select sum(total)
FROM invoices) + sum(total)
FROM invoices;
爲什麼這個查詢在Oracle中有錯誤,但在MySQL中是正確的?沒有一個單組函數oracle與子查詢總和
SELECT (select sum(total)
FROM invoices) + sum(total)
FROM invoices;
爲什麼這個查詢有一個錯誤在Oracle和MySQL中是正確的
由於MySQL是一種寬容約集料和非集合列。
在標準的SQL,包括GROUP BY子句中不能引用非聚合列在未在GROUP BY子句中命名的選擇列表中查詢。
[...]
MySQL的擴展使用GROUP BY的,這樣的選擇列表可參考在GROUP BY子句中未命名的非聚合列。
[...]
主要當在GROUP BY未命名每個非聚集列中的所有值都爲每個組相同的,這是有用的。 服務器可以自由選擇每個組中的任何值,因此除非它們相同,否則所選值不確定。
(select sum(total) FROM invoices)
是一個表達式,它不是一個聚合函數,它並沒有在GROUP BY存在,因此你想混合骨料和無 - (其實你不能在GROUP BY使用子查詢)
彙總表達式。
如果您正在尋找在甲骨文工作版本,你可以這樣做:
select sum(total) + sum(total)
from invoices;
這將是MySQL的一個更好的解決方案,以及。 – 2014-10-17 13:15:33