only_full_group_by =aktif memberi tahu mesin MySQL:Jangan terapkan GROUP BY ketika Anda ragu tentang hasil apa yang akan ditampilkan dan membuat kesalahan. Hanya terapkan jika Group By secara khusus memberitahu Anda apa yang harus dilakukan. yaitu ketika Group By penuh dan sempurna!
only_full_group_by =nonaktif memberi tahu mesin MySQL:selalu terapkan GROUP BY dan jika Anda ragu tentang hasil apa yang harus dipilih, pilih salah satu secara acak!
Anda tidak perlu mematikannya jika menggunakan GROUP BY dengan benar!
Contoh:
Tabel:pengguna
id | name
----------------
1 ali
2 john
3 ali
Saat Anda menggunakan GROUP BY pada name kolom:
SELECT * FROM users GROUP BY name;
Ada dua kemungkinan hasil:
1 ali
2 john
ATAU
2 john
3 ali
MYSQL tidak tahu hasil apa yang harus dipilih! Karena ada id yang berbeda s tetapi keduanya memiliki name=ali .
Solusi1:
hanya memilih name bidang:
SELECT name FROM users GROUP BY name;
hasil:
ali
john
Ini adalah solusi sempurna. menghapus kolom yang membuat GROUP BY bingung. Ini berarti Anda tahu apa yang Anda lakukan. Biasanya, Anda tidak memerlukan
kolom tersebut, tetapi jika Anda membutuhkannya, buka Solution3 !
Solusi2:
Menonaktifkan only_full_group_by . MYSQL akan memilih salah satu dari dua kemungkinan hasil RANDOM !! (Tidak apa-apa jika Anda tidak terlalu peduli apa id itu akan memilih, tetapi ingat untuk mengaktifkannya segera setelah kueri Anda untuk mencegah perilaku tak terduga di groupBys mendatang)
Solusi3
Gunakan Aggregate berfungsi seperti MIN() , MAX() untuk membantu MYSQL memutuskan apa yang harus dipilih.
Misalnya:
SELECT MAX(id), name FROM users GROUP BY name;
hasil:
2 john
3 ali
Ini akan memilih ali baris yang memiliki maksimum id .