Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Membetulkan Ralat 'SENARAI PILIH Tidak Serasi dengan GROUP BY' MySQL?
Menyelesaikan "Senarai PILIH Tidak Serasi dengan GROUP BY" Ralat dengan SQL_MODE
Mesej ralat MySQL:
Ungkapan #1 daripada Senarai SELECT tiada dalam klausa GROUP BY dan mengandungi lajur tanpa agregat 'returntr_prod.tbl_customer_pod_uploads.id' yang tidak bergantung pada lajur dalam klausa GROUP BY; ini tidak serasi dengan sql_mode=only_full_group_by
menunjukkan bahawa senarai SELECT mengandungi lajur bukan agregat yang tiada dalam klausa GROUP BY. Ralat ini berlaku apabila menggunakan mod SQL only_full_group_by MySQL.
Penyelesaian Potensi:
Anda boleh melumpuhkan mod only_full_group_by buat sementara waktu dengan melaksanakan perkara berikut arahan:
SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
Sebagai alternatif, anda boleh mengubah suai pertanyaan anda untuk memasukkan semua lajur daripada senarai PILIH dalam KUMPULAN MENGIKUT klausa:
SELECT * FROM `tbl_customer_pod_uploads` WHERE `load_id` = '78' AND `status` = 'Active' GROUP BY `load_id`, `bill_id`, `latitude`, `langitude`, `proof_type`, `document_type`, `file_name`, `is_private`, `status`, `createdon`, `updatedon`
Untuk amalan terbaik dalam Bahasa Pertanyaan Berstruktur, elakkan daripada memilih semua lajur. Sebaliknya, gunakan fungsi agregator pada lajur pengumpulan, seperti:
SELECT MAX(`id`) AS `id`, COUNT(*) AS `total_rows` FROM `tbl_customer_pod_uploads` WHERE `load_id` = '78' AND `status` = 'Active' GROUP BY `load_id`
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat 'SENARAI PILIH Tidak Serasi dengan GROUP BY' MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!