Rumah >pangkalan data >tutorial mysql >Mengapa pertanyaan MySQL 5.7 saya dengan pengagregatan gagal tanpa klausa GROUP BY?
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:
<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!