为什么这个查询在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