Mysql 没有包含子查询sum的单个组函数oracle sum
为什么这个查询在Oracle中有错误,但在MySQL中是正确的Mysql 没有包含子查询sum的单个组函数oracle sum,mysql,oracle,group-by,subquery,Mysql,Oracle,Group By,Subquery,为什么这个查询在Oracle中有错误,但在MySQL中是正确的 SELECT (select sum(total) FROM invoices) + sum(total) FROM invoices; select SUMTOAL FROM invoices是一个表达式,它不是聚合函数,并且在GROUP BY中不存在。实际上,您不能在GROUP BY中使用子查询 因此,您试图将聚合表达式和非聚合表达式混合在一起 为什么这个查询在oracle和mysql中有错误是正确的 因为MySQL允许混
SELECT (select sum(total)
FROM invoices) + sum(total)
FROM invoices;
select SUMTOAL FROM invoices是一个表达式,它不是聚合函数,并且在GROUP BY中不存在。实际上,您不能在GROUP BY中使用子查询
因此,您试图将聚合表达式和非聚合表达式混合在一起
为什么这个查询在oracle和mysql中有错误是正确的
因为MySQL允许混合聚合列和非聚合列
引述:
在标准SQL中,包含GROUP BY子句的查询不能引用select列表中未在GROUP BY子句中命名的未聚合列
[……]
MySQL扩展了GROUPBY的使用,因此select列表可以引用GROUPBY子句中未命名的未聚合列
[……]
这主要是在GROUP BY中未命名的每个非聚集列中的所有值对于每个组都相同时有用。服务器可以从每个组中自由选择任何值,因此,除非它们相同,否则选择的值是不确定的
如果您正在Oracle中寻找工作版本,可以执行以下操作:
select sum(total) + sum(total)
from invoices;
在MySQL中,哪种解决方案更好。