Dit overkomt je alleen maar omdat MySQL de logica van SQL doorbreekt.
Laten we zeggen dat we tafelmedewerker hebben:
id ename dept
1 mark 10
2 John 10
3 Mary 10
4 Jane 20
en de vraag:
select dept, ename
from emp
group by dept;
je krijgt wat? Je zou twee regels moeten krijgen, omdat er twee afdelingen zijn, maar de vraag vraagt om ename. Voor 20 is duidelijk maar voor 10 moet de motor wat teruggeven?
Het zou een fout moeten retourneren. Kan niet raden welke ename je moet geven. Oracle maakt een fout - jouw fout, maar MySQL krijgt een ename (niet gegarandeerd welke). Dat is misleidend en kan bugs veroorzaken.
De juiste vragen zijn:
select dept, max(ename) --the latest, alaphabeticaly
from emp
group by dept;
en
--all enames and groups
select dept, ename
from emp
group by dept, ename;
Nadat je dit onderdeel hebt gecorrigeerd, moet je de
COUNT(*) over() AS rowcount
een deel. In Oracle, AFAIK, kun je analytische functies niet combineren met groepsgewijs zoeken.