Mengatasi MySQL error ONLY_FULL_GROUP_BY

Jika mode ONLY_FULL_GROUP_BY SQL diaktifkan (yang secara default), MySQL menolak kueri yang daftar pilihnya, kondisi HAVING, atau daftar ORDER BY merujuk ke kolom tak teragregasi yang tidak disebutkan dalam klausa GROUP BY atau secara fungsional tidak bergantung pada mereka.

Penyelesaian masalah dengan mendisable ONLY_FULL_GROUP_BY

  1. Lakukan koneksi ke server via SSH
  2. Masuk ke MySQL command-line
  3. Paste perintah berikut dan enter
    SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

Jika ONLY_FULL_GROUP_BY dinonaktifkan, ekstensi MySQL ke penggunaan SQL standar dari GROUP BY mengizinkan daftar pilih, kondisi HAVING, atau daftar ORDER BY untuk merujuk ke kolom yang tidak teragregasi meskipun kolom tidak secara fungsional bergantung pada kolom GROUP BY. Ini menyebabkan MySQL menerima permintaan sebelumnya.

Dalam hal ini, server bebas memilih nilai apa pun dari setiap grup, jadi kecuali mereka sama, nilai yang dipilih tidak nondeterministic, yang mungkin bukan yang Anda inginkan. Selanjutnya, pemilihan nilai dari masing-masing kelompok tidak dapat dipengaruhi dengan menambahkan klausa ORDER BY.

Penyortiran hasil hasil terjadi setelah nilai dipilih, dan ORDER BY tidak mempengaruhi nilai mana dalam setiap grup yang dipilih server. Menonaktifkan ONLY_FULL_GROUP_BY berguna terutama ketika Anda tahu bahwa, karena beberapa properti data, semua nilai di setiap kolom yang dipisahkan tidak dinamai dalam GROUP BY adalah sama untuk setiap grup.

Referensi:

No ratings yet.

Please rate this

Related Posts

Leave a Reply

Your email address will not be published. Required fields are marked *