首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不是带有子查询和的单组函数oracle和。

问不是带有子查询和的单组函数oracle和。
EN

Stack Overflow用户
提问于 2014-10-16 21:27:57
回答 3查看 198关注 0票数 0

为什么这个查询在Oracle中有一个错误,但是在MySQL中是正确的?

代码语言:javascript
复制
SELECT (select sum(total)
FROM   invoices) + sum(total)
FROM invoices;
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-10-16 21:38:50

为什么这个查询在oracle和mysql中出现错误是正确的?

因为MySQL允许混合聚合列和非聚集列。

引用文献资料

在标准SQL中,包含GROUP BY子句的查询不能引用select列表中未在GROUP BY子句中命名的非聚合列。 ..。 MySQL扩展了GROUP BY的用法,以便select列表可以引用GROUP BY子句中未命名的非聚合列。 ..。 这主要是当每个组中未命名的每个非聚合列中的所有值对每个组相同时,这一点非常有用。服务器可以自由地从每个组中选择任何值,因此,除非它们是相同的,否则所选择的值是不确定的。

票数 0
EN

Stack Overflow用户

发布于 2014-10-16 21:31:18

(select sum(total) FROM invoices)是一个表达式,它不是聚合函数,它不存在于GROUP中(实际上不能在GROUP BY中使用子查询)

因此,您正在尝试将聚合表达式和无聚合表达式混合在一起。

票数 0
EN

Stack Overflow用户

发布于 2014-10-17 13:00:39

如果您正在Oracle中寻找一个工作版本,您可以这样做:

代码语言:javascript
复制
select sum(total) + sum(total)
from invoices;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26414195

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档