当前位置:  开发笔记 > 后端 > 正文

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

如何解决《ORA-00979:不是Oracle的GROUPBY表达式,但在子句差异的上下文中对MySQL无效》经验,为你挑选了1个好方法。

我在Oracle中运行了这个查询

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

并得到错误:

ORA-00979:不是GROUP BY表达式

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

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

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

可能是什么伎俩?



1> Gordon Linof..:

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;

这将适用于两个数据库.

推荐阅读
U友50081205_653
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有