Rumah >pangkalan data >tutorial mysql >Mengapakah Saya Tidak Boleh Mengagregatkan Pertanyaan dalam MySQL Tanpa Klausa MENGIKUT KUMPULAN?

Mengapakah Saya Tidak Boleh Mengagregatkan Pertanyaan dalam MySQL Tanpa Klausa MENGIKUT KUMPULAN?

Susan Sarandon
Susan Sarandonasal
2024-10-26 02:35:02988semak imbas

Why Can't I Aggregate Queries in MySQL Without a GROUP BY Clause?

Mengagregatkan Pertanyaan tanpa GROUP BY dalam MySQL

Pertanyaan anda menghadapi ralat sintaks semasa mengagregatkan data tanpa menyatakan klausa GROUP BY. Tingkah laku ini telah diperkenalkan dalam MySQL 5.7.5 sebagai sebahagian daripada usaha untuk memastikan integriti pengagregatan data.

Mesej ralat menerangkan bahawa lajur tidak teragregat, seperti id dalam pertanyaan anda, tidak boleh muncul dalam SELECT senarai apabila fungsi agregat (seperti COUNT()) digunakan tanpa klausa GROUP BY. Ini memastikan bahawa hasil pengagregatan adalah tepat dan konsisten.

Menyelesaikan Ralat

Anda mempunyai dua pilihan untuk menyelesaikan ralat ini:

  1. Tukar Tetapan MySQL: Anda boleh mengubah suai konfigurasi MySQL untuk kembali kepada tingkah laku sebelumnya, di mana lajur tidak teragregat dibenarkan dalam senarai SELECT tanpa klausa GROUP BY. Walau bagaimanapun, ini tidak disyorkan kerana ia melanggar amalan terbaik untuk pengagregatan data.
  2. Ubah Suai Pertanyaan Anda: Penyelesaian pilihan adalah untuk mengubah suai pertanyaan anda untuk memasukkan klausa GROUP BY yang mengumpulkan hasil mengikut lajur tidak terkumpul. Dalam kes anda, anda boleh menggunakan pertanyaan yang dikemas kini berikut:
SELECT id, password, COUNT(id) AS count 
FROM users 
WHERE email = :email 
GROUP BY id, password 
LIMIT 1

Sebagai alternatif, jika anda boleh memastikan bahawa lajur tidak teragregat (cth., id) dihadkan kepada satu nilai di WHERE klausa, anda boleh mengecualikannya daripada klausa GROUP BY. Rujuk pautan yang disediakan untuk contoh pengecualian ini.

Dengan menggunakan salah satu kaedah ini, anda boleh menyelesaikan ralat dan memastikan pengagregatan data yang betul dalam pertanyaan MySQL anda.

Atas ialah kandungan terperinci Mengapakah Saya Tidak Boleh Mengagregatkan Pertanyaan dalam MySQL Tanpa Klausa MENGIKUT KUMPULAN?. 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