Dzieje się tak tylko dlatego, że MySQL łamie logikę SQL.
Powiedzmy, że mamy stół emp:
id ename dept
1 mark 10
2 John 10
3 Mary 10
4 Jane 20
i zapytanie:
select dept, ename
from emp
group by dept;
dostaniesz co? Powinieneś dostać dwie linie, ponieważ są dwa działy, ale zapytanie pyta o ename. Za 20 jest jasne, ale za 10 silnik powinien zwracać co?
Powinien zwrócić błąd. Nie mogę zgadnąć, jaką nazwę e-mail podać.Oracle zgłasza błąd — Twój błąd, ale MySQL otrzymuje nazwę e-mail (nie jest gwarantowana). To mylące i może prowadzić do błędów.
Prawidłowe zapytania to:
select dept, max(ename) --the latest, alaphabeticaly
from emp
group by dept;
i
--all enames and groups
select dept, ename
from emp
group by dept, ename;
Po poprawieniu tej części musisz rozwiązać problem
COUNT(*) over() AS rowcount
część. W Oracle AFAIK nie można mieszać funkcji analitycznych z grupowaniem według zapytań.