Rumah >pangkalan data >tutorial mysql >Mengapa MySQL Melemparkan Ralat 'tidak ada dalam GROUP BY', dan Bagaimana Saya Boleh Membetulkannya?

Mengapa MySQL Melemparkan Ralat 'tidak ada dalam GROUP BY', dan Bagaimana Saya Boleh Membetulkannya?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-21 02:42:10654semak imbas

Why Does MySQL Throw an

Ralat MySQL: 'tiada dalam GROUP BY'

MySQL sering menjana ralat "tidak dalam GROUP BY" apabila mendapatkan semula data daripada jadual menggunakan pertanyaan khusus. Memahami punca dan cara menyelesaikannya adalah penting.

Latar Belakang:

MySQL memerlukan semua lajur yang disertakan dalam klausa SELECT, kecuali fungsi agregat seperti COUNT, mesti juga dimasukkan ke dalam klausa GROUP BY. Ini memastikan bahawa keputusan adalah berdasarkan kumpulan data dengan nilai yang berbeza dalam lajur yang ditentukan.

Contoh Ralat:

Dalam contoh yang disediakan, ralat timbul apabila menggunakan pertanyaan:

SELECT `name`, `type`, `language`, `code` 
FROM `users` 
WHERE `verified` = '1' 
GROUP BY `name` 
ORDER BY `count` DESC LIMIT 0, 25

MySQL mengesan bahawa kiraan lajur tidak terdapat dalam GROUP BY klausa.

Penyelesaian:

Untuk menangani ralat ini, anda mesti memasukkan semua lajur dalam klausa SELECT dalam klausa GROUP BY. Dalam kes ini, pertanyaan yang diubah suai ialah:

SELECT `name`, `type`, `language`, `code` 
FROM `users` 
WHERE `verified` = '1' 
GROUP BY `name`, `type`, `language`, `code` 
ORDER BY `count` DESC LIMIT 0, 25

Nota Tambahan:

  • Gelagat lalai MySQL ialah membenarkan separa GROUP BY, yang boleh membawa kepada keputusan bukan penentu.
  • Untuk menguatkuasakan GROUP BY penuh, tetapkan @@sql_mode='ONLY_FULL_GROUP_BY'.

Atas ialah kandungan terperinci Mengapa MySQL Melemparkan Ralat 'tidak ada dalam GROUP BY', dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn