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

Bagaimana untuk Menyelesaikan Ralat MySQL #1140: Pencampuran Lajur KUMPULAN?

Barbara Streisand
Barbara Streisandasal
2024-12-29 16:51:17752semak imbas

How to Resolve MySQL Error #1140: Mixing of GROUP Columns?

Ralat MySQL #1140: Pencampuran Lajur GROUP

Ralat ini berlaku apabila pertanyaan MySQL mencampurkan fungsi GROUP dengan lajur bukan GROUP dalam PILIH senarai, tetapi tanpa klausa GROUP BY. Dalam erti kata lain, ia mencadangkan bahawa sesetengah lajur yang dipilih harus dikumpulkan bersama, manakala yang lain tidak sepatutnya.

Pertimbangkan pertanyaan SQL berikut:

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;

Pertanyaan ini cuba mengira bilangan nod jenis 'kemas kini' dan dapatkan ID nod (nid) dan tarikh kemas kini untuk setiap nod. Walau bagaimanapun, ia mencampurkan fungsi GROUP COUNT() dengan lajur bukan GROUP nid dan node_data_field_update_date_field_update_date_value dalam senarai PILIH.

Untuk menyelesaikan ralat ini, sama ada lumpuhkan tetapan ONLY_FULL_GROUP_BY pada pelayan MySQL atau ubah suai pertanyaan kepada kumpulan yang bukan KUMPULAN lajur:

Melumpuhkan ONLY_FULL_GROUP_BY:

mysql> SET GLOBAL ONLY_FULL_GROUP_BY = OFF;

Menambahkan Pengumpulan pada Pertanyaan:

SELECT COUNT(node.nid) AS node_count,
       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;

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!

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