为什么这个查询在Oracle中有一个错误,但是在MySQL中是正确的?
SELECT (select sum(total)
FROM invoices) + sum(total)
FROM invoices;发布于 2014-10-16 21:38:50
为什么这个查询在oracle和mysql中出现错误是正确的?
因为MySQL允许混合聚合列和非聚集列。
引用文献资料
在标准SQL中,包含GROUP BY子句的查询不能引用select列表中未在GROUP BY子句中命名的非聚合列。 ..。 MySQL扩展了GROUP BY的用法,以便select列表可以引用GROUP BY子句中未命名的非聚合列。 ..。 这主要是当每个组中未命名的每个非聚合列中的所有值对每个组相同时,这一点非常有用。服务器可以自由地从每个组中选择任何值,因此,除非它们是相同的,否则所选择的值是不确定的。
发布于 2014-10-16 21:31:18
(select sum(total) FROM invoices)是一个表达式,它不是聚合函数,它不存在于GROUP中(实际上不能在GROUP BY中使用子查询)
因此,您正在尝试将聚合表达式和无聚合表达式混合在一起。
发布于 2014-10-17 13:00:39
如果您正在Oracle中寻找一个工作版本,您可以这样做:
select sum(total) + sum(total)
from invoices;https://stackoverflow.com/questions/26414195
复制相似问题