2014-10-16 50 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