我在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;

这将适用于两个数据库.

标签:mysql,database,sql,oracle,rdbms

来源: https://codeday.me/bug/20190611/1220978.html

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐