设为首页 - 加入收藏 PHP编程网 - PHP站长网 (http://www.52php.cn)- 电商,百科,编程,业界,移动互联,5G,云计算,站长网!
热搜: 娱乐 站长之家 服务 百度
当前位置: 首页 > 站长百科 > 正文

ORA-00979:不是Oracle的GROUP BY表达式,但在子句差异的上下文中

发布时间:2021-01-16 13:21 所属栏目:[站长百科] 来源:网络整理
导读:我在Oracle中运行了这个查询 select studentid,attndmarkfrom attendance_master m,attendance_detail dwhere m.attnid = d.attendidgroup by studentid 并得到错误: ORA-00979: not a GROUP BY expression 错误很好,我知道select子句中列列表的问题.但类

我在Oracle中运行了这个查询

select studentid,attndmark
from attendance_master m,attendance_detail d
where m.attnid = d.attendid
group by studentid

并得到错误:

ORA-00979: not a GROUP BY expression

错误很好,我知道select子句中列列表的问题.但类似的查询在MySQL中是有效的.

SELECT aff.akey,username
FROM `affiliates` aff,affstats ast
WHERE aff.akey = ast.akey
group by aff.akey

我需要一个可以在RDBMS Oracle / Mysql和MSSQL上运行的查询技巧.

可能是什么伎俩?

解决方法

MySQL是错误的,因为它不符合SQL标准(在这种情况下甚至是常识).它允许SELECT中的列不是聚合函数的参数且不在GROUP BY中.文档明确指出值来自“不确定”行.

顺便说一下,你应该学习正确的显式JOIN语法.查询可以写成:

SELECT aff.akey,MAX(username)
FROM affiliates aff JOIN
     affstats ast 
     ON aff.akey=ast.akey
GROUP BY aff.akey;

这将适用于两个数据库.

【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

推荐文章
热点阅读