Anda harus meletakkan semua kolom SELECT
di GROUP BY
atau gunakan fungsi di dalamnya yang mengompresi hasil menjadi satu nilai (seperti MIN
, MAX
atau SUM
).
Contoh sederhana untuk memahami mengapa ini terjadi:Bayangkan Anda memiliki database seperti ini:
FOO BAR
0 A
0 B
dan Anda menjalankan SELECT * FROM table GROUP BY foo
. Ini berarti database harus mengembalikan satu baris sebagai hasil dengan kolom pertama 0
untuk memenuhi GROUP BY
tetapi sekarang ada dua nilai bar
untuk memilih dari. Hasil mana yang Anda harapkan - A
atau B
? Atau jika database mengembalikan lebih dari satu baris, melanggar kontrak GROUP BY
?