これは、MySQLがSQLのロジックを壊したという理由だけで起こります。
テーブルempがあるとしましょう:
id ename dept
1 mark 10
2 John 10
3 Mary 10
4 Jane 20
とクエリ:
select dept, ename
from emp
group by dept;
2つの部門があるので、2行を取得する必要がありますが、クエリはenameを要求します。 20の場合は明らかですが、10の場合、エンジンは何を返す必要がありますか?
エラーを返す必要があります。与えるenameを推測できません。Oracleはエラーを発生させます-エラーですが、MySQLはenameを取得します(どちらが保証されていません)。これは誤解を招き、バグを引き起こす可能性があります。
正しいクエリは次のようになります:
select dept, max(ename) --the latest, alaphabeticaly
from emp
group by dept;
および
--all enames and groups
select dept, ename
from emp
group by dept, ename;
この部分を修正したら、解決する必要があります
COUNT(*) over() AS rowcount
部。オラクルのAFAIKでは、分析関数とgroupbyクエリを混在させることはできません。