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

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

Linda Hamilton
Lepaskan: 2024-12-18 08:03:10
asal
885 orang telah melayarinya

How to Resolve MySQL Error #1140:

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
Salin selepas log masuk

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`
Salin selepas log masuk

Penyelesaian:

Untuk menyelesaikan isu ini, seseorang mesti melumpuhkan tetapan ONLY_FULL_GROUP_BY atau menguatkuasakan operasi kumpulan dalam SQL pertanyaan.

  • Melumpuhkan ONLY_FULL_GROUP_BY: Ini boleh dicapai dengan mengubah fail konfigurasi MySQL dan menetapkan parameter berikut:
only_full_group_by = 0
Salin selepas log masuk
  • Menguatkuasakan Perkumpulan: Menambah KUMPULAN OLEH klausa kepada pertanyaan akan menyelesaikan isu tersebut. Dalam kes ini, pengumpulan boleh digunakan pada satu atau lebih medan, seperti node.nid, untuk memastikan bahawa fungsi agregat (COUNT()) digunakan hanya dalam data terkumpul. Pertanyaan yang diubah suai akan kelihatan seperti:
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
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan