Ralat MySQL: Senarai PILIH Tidak Serasi dengan SQL_MODE=ONLY_FULL_GROUP_BY
Apabila melaksanakan pertanyaan yang merangkumi pernyataan SELECT dengan lajur tidak teragregat klausa kumpulan, MySQL mungkin mengembalikan ralat yang menunjukkan bahawa ungkapan itu tidak ada klausa GROUP BY. Ini boleh berlaku apabila SQL_MODE ditetapkan kepada ONLY_FULL_GROUP_BY, yang memerlukan semua lajur bukan agregat dalam senarai PILIH disertakan dalam klausa GROUP BY.
Penyelesaian 1: Lumpuhkan SQL_MODE=ONLY_FULL_GROUP_BYSatu penyelesaian adalah untuk melumpuhkan SQL_MODE=ONLY_FULL_GROUP_BY tetapan dengan mengeluarkan arahan berikut:
Ini akan membenarkan pertanyaan untuk dilaksanakan tanpa ralat.SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
Penyelesaian lain ialah untuk memasukkan semua lajur tidak teragregat dalam klausa GROUP BY. Ini boleh dilakukan dengan mengubah suai pertanyaan untuk memasukkan perkara berikut:
Ini akan memastikan semua lajur tidak teragregat disertakan dalam klausa GROUP BY dan pertanyaan akan dilaksanakan tanpa ralat.SELECT * FROM `tbl_customer_pod_uploads` WHERE `load_id` = '78' AND `status` = 'Active' GROUP BY `proof_type`, `id`
Untuk amalan terbaik, pertimbangkan untuk menggunakan agregator berfungsi untuk lajur tidak terkumpul dan bukannya memilih semua lajur. Contohnya, jika anda hanya memerlukan kiraan rekod untuk setiap jenis bukti, pertanyaan boleh diubah suai seperti berikut:
Atas ialah kandungan terperinci Cara Menyelesaikan Ralat MySQL: Senarai PILIH Tidak Serasi dengan SQL_MODE=ONLY_FULL_GROUP_BY?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!