Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menyelesaikan Ralat 'Pencampuran Lajur KUMPULAN' MySQL (Ralat #1140)?

Bagaimana untuk Menyelesaikan Ralat 'Pencampuran Lajur KUMPULAN' MySQL (Ralat #1140)?

Linda Hamilton
Linda Hamiltonasal
2024-12-27 16:13:09908semak imbas

How to Solve MySQL's

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!

Kenyataan:
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