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

DDD
Lepaskan: 2024-10-26 01:42:28
asal
907 orang telah melayarinya

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!