Dette sker for dig, bare fordi MySQL bryder logikken i SQL.
Lad os sige, at vi har table emp:
id ename dept
1 mark 10
2 John 10
3 Mary 10
4 Jane 20
og forespørgslen:
select dept, ename
from emp
group by dept;
får du hvad? Du bør få to linjer, fordi der er to afdelinger, men forespørgslen beder om ename. For 20 er klart, men for 10 bør motoren returnere hvad?
Det skal returnere en fejl. Kan ikke gætte hvilket ename man skal give. Oracle skyder en fejl - din fejl, men MySQL får et ename (ikke garanteret hvilket). Det er vildledende og kan forårsage fejl.
Korrekte forespørgsler ville være:
select dept, max(ename) --the latest, alaphabeticaly
from emp
group by dept;
og
--all enames and groups
select dept, ename
from emp
group by dept, ename;
Når du har rettet denne del, bliver du nødt til at løse problemet
COUNT(*) over() AS rowcount
en del. I Oracle, AFAIK, kan du ikke blande analytiske funktioner med gruppe efter forespørgsler.