Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menyelesaikan Ralat 'Pencampuran Lajur KUMPULAN' MySQL (Ralat #1140)?
Menyelesaikan Ralat "Pencampuran Lajur KUMPULAN" dalam MySQL
Ralat #1140 dalam MySQL, menunjukkan "Pencampuran lajur GROUP," timbul apabila pertanyaan mengandungi lajur tidak teragregat (bukan KUMPULAN) dalam klausa SELECT sambil juga termasuk lajur agregat tanpa klausa GROUP BY. Untuk menangani isu ini, terdapat dua pendekatan utama:
1. Melumpuhkan ONLY_FULL_GROUP_BY:
MySQL mempunyai tetapan konfigurasi yang dipanggil ONLY_FULL_GROUP_BY, yang lalai kepada HIDUP. Tetapan ini menguatkuasakan semantik GROUP BY yang ketat, memerlukan semua lajur tidak teragregat dalam klausa SELECT untuk disertakan dalam senarai GROUP BY. Untuk melumpuhkan tetapan ini, laksanakan pertanyaan berikut:
SET SESSION ONLY_FULL_GROUP_BY = OFF;
Lumpuhkan ONLY_FULL_GROUP_BY untuk membenarkan pertanyaan dilaksanakan tanpa pengubahsuaian.
2. Menambah GROUP BY Columns:
Sebagai alternatif, anda boleh mengubah suai pertanyaan untuk memasukkan semua medan yang dipilih dalam klausa GROUP BY. Ini memastikan bahawa semua lajur tidak teragregat "dihimpunkan" dan set hasil memenuhi semantik GROUP BY yang ketat:
SELECT COUNT(node.nid), node.nid AS nid, node_data_field_update_date.field_update_date_value AS node_data_field_update_date_field_update_date_value FROM node node LEFT JOIN content_type_update node_data_field_update_date ON node.vid = node_data_field_update_date.vid WHERE node.type IN ('update') GROUP BY node.nid, node_data_field_update_date.field_update_date_value ORDER BY node_data_field_update_date_field_update_date_value DESC;
Mengubah suai pertanyaan untuk memasukkan klausa GROUP BY menyelesaikan isu dengan mengelompokkan hasil secara eksplisit ditetapkan pada semua lajur bukan teragregat.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat 'Pencampuran Lajur KUMPULAN' MySQL (Ralat #1140)?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!