Bạn phải đặt tất cả các cột của SELECT
trong GROUP BY
hoặc sử dụng các hàm trên chúng để nén kết quả thành một giá trị duy nhất (như MIN
, MAX
hoặc SUM
).
Một ví dụ đơn giản để hiểu tại sao điều này xảy ra:Hãy tưởng tượng bạn có một cơ sở dữ liệu như thế này:
FOO BAR
0 A
0 B
và bạn chạy SELECT * FROM table GROUP BY foo
. Điều này có nghĩa là cơ sở dữ liệu phải trả về một hàng duy nhất với cột đầu tiên 0
để hoàn thành GROUP BY
nhưng bây giờ có hai giá trị của bar
để chọn từ. Bạn mong đợi kết quả nào - A
hoặc B
? Hoặc cơ sở dữ liệu phải trả về nhiều hơn một hàng, vi phạm hợp đồng của GROUP BY
?