Rumah  >  Artikel  >  pangkalan data  >  Mengapa Saya Mendapat Ralat \"Agregat Query Tanpa GROUP BY\" dalam MySQL 5.7.5 ?

Mengapa Saya Mendapat Ralat \"Agregat Query Tanpa GROUP BY\" dalam MySQL 5.7.5 ?

Patricia Arquette
Patricia Arquetteasal
2024-10-25 21:37:29642semak imbas

Why Am I Getting the

SQL Ralat: "Pertanyaan Agregat Tanpa KUMPULAN OLEH"

MySQL 5.7.14 memperkenalkan perubahan yang mungkin menyebabkan pertanyaan sedia ada anda gagal dengan ralat "SQLSTATE[42000]: Ralat sintaks atau pelanggaran akses: 1140 Dalam pertanyaan agregat tanpa GROUP BY." Ralat ini berlaku apabila anda mengagregatkan lajur (cth., COUNT()) dalam klausa SELECT tetapi tidak memasukkan lajur tidak teragregat dalam klausa GROUP BY.

Mengapa Ralat Berlaku

Dalam versi MySQL yang lebih awal, mengagregatkan lajur tanpa menggunakan GROUP BY dibenarkan. Walau bagaimanapun, untuk memastikan integriti data, MySQL 5.7.5 dan versi yang lebih baru menguatkuasakan mod SQL "ketat" atau "hanya_kumpulan_penuh_oleh", yang memerlukan semua lajur tidak terkumpul dimasukkan dalam klausa GROUP BY.

< h3>Pilihan Penyelesaian

Anda mempunyai dua pilihan untuk menyelesaikan isu ini:

1. Tukar Tetapan MySQL

Anda boleh mengubah suai konfigurasi MySQL kepada lalai kepada tingkah laku warisan yang membenarkan lajur tidak teragregat di luar klausa GROUP BY. Ini tidak disyorkan kerana ia bertentangan dengan amalan terbaik industri dan boleh membawa kepada keputusan yang salah.

2. Betulkan Pertanyaan

Ubah suai pertanyaan anda untuk memasukkan lajur tidak teragregat dalam klausa GROUP BY. Contohnya:

<code class="sql">SELECT id, password, COUNT(id) AS count
FROM users
WHERE email = :email
GROUP BY id, password
LIMIT 1</code>

Pengecualian kepada Peraturan

Perhatikan bahawa mengecualikan lajur tidak teragregat daripada klausa GROUP BY masih dibenarkan dalam MySQL 5.7.5 dan versi kemudian jika lajur tidak teragregat dihadkan kepada satu nilai. Sebagai contoh, penapis dalam klausa WHERE akan mengehadkan lajur kepada satu baris, menjadikannya selamat untuk mengecualikannya daripada klausa GROUP BY.

Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat \"Agregat Query Tanpa GROUP BY\" dalam MySQL 5.7.5 ?. 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