Rumah  >  Artikel  >  pangkalan data  >  Mengapa pertanyaan MySQL 5.7 saya dengan pengagregatan gagal tanpa klausa GROUP BY?

Mengapa pertanyaan MySQL 5.7 saya dengan pengagregatan gagal tanpa klausa GROUP BY?

DDD
DDDasal
2024-10-26 01:42:28908semak imbas

Why is my MySQL 5.7  query with aggregation failing without a GROUP BY clause?

Pertanyaan Agregat Memerlukan GROUP BY dalam MySQL 5.7

S: Selepas menaik taraf kepada MySQL 5.7.14, saya menghadapi ralat semasa melaksanakan pertanyaan tanpa klausa GROUP BY. Pertanyaan, yang melibatkan pengagregatan (COUNT) dan lajur tidak teragregat dalam senarai SELECT, sebelum ini berfungsi pada mesin yang lebih lama.

J: Dalam MySQL versi 5.7.5 dan kemudian, tingkah laku lalai telah berubah untuk menguatkuasakan penggunaan GROUP BY apabila mengagregatkan data. Ini bermakna apabila menggunakan fungsi seperti COUNT dalam klausa SELECT, semua lajur bukan agregat mesti disertakan dalam klausa KUMPULAN OLEH.

Untuk menyelesaikan ralat, anda mempunyai dua pilihan:

  • Ubah suai tetapan MySQL: Laraskan konfigurasi MySQL untuk kembali kepada tingkah laku sebelumnya yang membenarkan lajur tidak teragregat dalam pertanyaan agregat tanpa GROUP BY.
  • Betulkan pertanyaan: Kemas kini pertanyaan untuk memasukkan semua lajur tidak teragregat dalam klausa GROUP BY, seperti dalam contoh berikut:
<code class="sql">SELECT id, password, COUNT(id) AS count 
FROM users 
WHERE email = :email 
GROUP BY id, password 
LIMIT 1</code>

Adalah penting untuk ambil perhatian bahawa pengecualian wujud dalam MySQL 5.7.5 dan ke atas apabila lajur tidak teragregat telah dihadkan kepada satu nilai menggunakan penapis dalam klausa WHERE. Dalam kes sedemikian, lajur tidak teragregat boleh dikecualikan daripada klausa GROUP BY. Untuk butiran lanjut, rujuk dokumentasi rasmi.

Atas ialah kandungan terperinci Mengapa pertanyaan MySQL 5.7 saya dengan pengagregatan gagal tanpa klausa GROUP BY?. 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