Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menyelesaikan Ralat 'SENARAI PILIH MySQL tiada dalam klausa GROUP BY'?

Bagaimana untuk Menyelesaikan Ralat 'SENARAI PILIH MySQL tiada dalam klausa GROUP BY'?

DDD
DDDasal
2024-12-22 16:40:13236semak imbas

How to Resolve MySQL's

Menyelesaikan masalah "SENARAI PILIH tiada dalam klausa KUMPULAN OLEH" Ralat dengan MySQL

Ralat "Ungkapan #1 senarai SELECT tiada dalam KUMPULAN OLEH klausa dan mengandungi lajur tanpa agregat" biasanya berlaku dalam MySQL apabila hasil pertanyaan mengandungi lajur bukan agregat yang tidak termasuk dalam klausa GROUP BY. Ini disebabkan oleh tetapan sql_mode=only_full_group_by, yang menguatkuasakan peraturan pengelompokan yang lebih ketat.

Untuk menangani isu ini, terdapat beberapa penyelesaian:

  1. Lumpuhkan sql_mode=only_full_group_by: 🎜> Ini boleh dilakukan dengan perkara berikut arahan:
SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
  1. Sertakan semua lajur yang dipilih dalam klausa KUMPULAN OLEH: Ini memastikan semua lajur dalam senarai PILIH disertakan dalam operasi GROUP BY. Contohnya:
SELECT *
FROM `tbl_customer_pod_uploads`
WHERE `load_id` = '78' AND
      `status` = 'Active'
GROUP BY `proof_type`, `id`
  1. Gunakan fungsi pengagregatan: Daripada memilih lajur individu, gunakan fungsi pengagregatan seperti SUM(), COUNT(), atau AVG( ) untuk mengumpulkan data. Ini menghapuskan keperluan untuk klausa GROUP BY. Contohnya:
SELECT `proof_type`, COUNT(*) AS `document_count`
FROM `tbl_customer_pod_uploads`
WHERE `load_id` = '78' AND
      `status` = 'Active'
GROUP BY `proof_type`
Adalah penting untuk ambil perhatian bahawa menukar mod SQL bukanlah amalan terbaik. Penyelesaian pilihan ialah mengubah suai pertanyaan untuk mematuhi peraturan pengelompokan yang lebih ketat.

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat 'SENARAI PILIH MySQL tiada dalam klausa GROUP BY'?. 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