Đây là một điều mới trong MySQL 5.7 và là một cảnh báo rằng truy vấn của bạn không rõ ràng.
Xem xét bảng sau:
id | name | age | points
--------------------------------------------
1 Bob 21 1
2 James 14 1
3 Bob 21 3
4 James 14 2
5 Casey 17 3
Nếu bạn đã thực hiện truy vấn sau:
SELECT name, age, SUM(points) FROM scores GROUP BY name
Sau đó là name
cột được sử dụng để phân nhóm. Lưu ý rằng age
có thể có nhiều giá trị, vì vậy nó "không được tổng hợp". Bạn cần phải làm gì đó để thu gọn các giá trị đó.
Hành vi trong 5.6 trở về trước là chỉ chọn cái đầu tiên tùy thuộc vào thứ tự sắp xếp, mặc dù điều này đôi khi không thể đoán trước và sẽ thất bại. Trong 5.7, họ ngăn cản bạn làm điều đó ngay từ đầu.
Giải pháp ở đây là nhóm trên đó hoặc áp dụng một toán tử tổng hợp như MIN()
với nó.