Điều này xảy ra với bạn chỉ vì MySQL phá vỡ logic của SQL.
Giả sử chúng ta có bảng trống:
id ename dept
1 mark 10
2 John 10
3 Mary 10
4 Jane 20
và truy vấn:
select dept, ename
from emp
group by dept;
bạn sẽ nhận được gì? Bạn sẽ nhận được hai dòng, bởi vì có hai phòng ban, nhưng truy vấn yêu cầu tên ename. Đối với 20 là rõ ràng nhưng đối với 10 động cơ sẽ trả lại những gì?
Nó sẽ trả về một lỗi. Không thể đoán được ename nào để cung cấp. Phép màu bắn lỗi - lỗi của bạn, nhưng MySQL nhận được một ename (không được đảm bảo).
Các truy vấn đúng sẽ là:
select dept, max(ename) --the latest, alaphabeticaly
from emp
group by dept;
và
--all enames and groups
select dept, ename
from emp
group by dept, ename;
Sau khi sửa phần này, bạn sẽ phải giải quyết
COUNT(*) over() AS rowcount
phần. Trong oracle, AFAIK, bạn không thể kết hợp các chức năng phân tích với nhóm theo truy vấn.