Ralat MySQL #1140: Memahami Isu "Pencampuran Lajur KUMPULAN"
Ralat MySQL #1140, "Pencampuran lajur GROUP ( MIN(), MAX(), COUNT(), ...) tanpa lajur GROUP adalah haram jika ada tiada klausa GROUP BY," timbul apabila anda cuba mengagregat data (cth., menggunakan fungsi seperti COUNT()) tanpa mengumpulkan hasil. Ini boleh berlaku apabila pertanyaan SQL mengandungi fungsi agregat dan lajur bukan agregat dalam klausa SELECT, dan klausa GROUP BY tiada.
Perihalan Masalah:
The pertanyaan SQL berikut menunjukkan isu ini:
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') ORDER BY node_data_field_update_date_field_update_date_value DESC
Melaksanakan pertanyaan ini dengan tetapan ONLY_FULL_GROUP_BY yang didayakan pada pelayan menghasilkan mesej ralat:
#1140 - Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause`
Penyelesaian:
Untuk menyelesaikan isu ini, seseorang mesti melumpuhkan tetapan ONLY_FULL_GROUP_BY atau menguatkuasakan operasi kumpulan dalam SQL pertanyaan.
only_full_group_by = 0
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 ORDER BY node_data_field_update_date_field_update_date_value DESC
Dengan menggunakan salah satu daripada penyelesaian ini, anda boleh memintas ralat "Pencampuran lajur KUMPULAN" dan berjaya mendapatkan data agregat.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat MySQL #1140: 'Pencampuran Lajur KUMPULAN'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!