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 ?