我在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上运行的查询技巧.
可能是什么伎俩?
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;
这将适用于两个数据库.