Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 没有包含子查询sum的单个组函数oracle sum_Mysql_Oracle_Group By_Subquery - Fatal编程技术网

Mysql 没有包含子查询sum的单个组函数oracle sum

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允许混

为什么这个查询在Oracle中有错误,但在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中,哪种解决方案更好。