Rumah >pangkalan data >tutorial mysql >Mengapa Pertanyaan SQL Saya Menghasilkan Ralat 'Lajur Bukan Agregat atau Kumpulan Mengikut Klausa'?

Mengapa Pertanyaan SQL Saya Menghasilkan Ralat 'Lajur Bukan Agregat atau Kumpulan Mengikut Klausa'?

Susan Sarandon
Susan Sarandonasal
2025-01-23 01:26:09376semak imbas

Why Does My SQL Query Produce a

Menyelesaikan masalah "Lajur Tidak Dalam Agregat atau Kumpulan Mengikut Klausa" Ralat SQL

Panduan ini menangani ralat SQL biasa: "Lajur 'Employee.EmpID' tidak sah dalam senarai pilih kerana ia tidak terkandung dalam fungsi agregat atau klausa GROUP BY." Ralat ini timbul apabila pernyataan SELECT anda termasuk lajur yang tidak diagregatkan mahupun sebahagian daripada klausa GROUP BY.

Memahami Fungsi Agregat dan KUMPULAN OLEH

A GROUP BY klausa mengumpulkan baris dengan nilai yang sama dalam lajur yang ditentukan. Untuk memaparkan data daripada kumpulan ini, anda biasanya menggunakan fungsi agregat seperti SUM, COUNT, AVG, MIN atau MAX. Fungsi ini mengira nilai ringkasan untuk setiap kumpulan.

Peraturan Nilai Tunggal

Peraturan nilai tunggal SQL menetapkan bahawa mana-mana lajur tidak teragregat dalam senarai SELECT mesti mempunyai nilai tunggal yang konsisten dalam setiap kumpulan. Jika lajur tidak teragregat memegang berbilang nilai bagi setiap kumpulan, pertanyaan adalah samar-samar, kerana SQL tidak dapat menentukan nilai yang hendak dikembalikan.

Menyelesaikan Ralat

Katakan matlamat anda adalah untuk menyenaraikan ID Lokasi dan kiraan pekerja di setiap lokasi. Pertanyaan yang diperbetulkan menggunakan COUNT fungsi agregat:

<code class="language-sql">SELECT loc.LocationID, COUNT(emp.EmpID) AS EmployeeCount
FROM Employee AS emp
FULL JOIN Location AS loc ON emp.LocationID = loc.LocationID
GROUP BY loc.LocationID;</code>

COUNT(emp.EmpID) mengira bilangan pekerja bagi setiap LocationID. Ini memastikan satu EmployeeCount nilai bagi setiap kumpulan, memenuhi peraturan nilai tunggal dan menghapuskan ralat. Klausa GROUP BY loc.LocationID mengumpulkan hasil mengikut lokasi.

Atas ialah kandungan terperinci Mengapa Pertanyaan SQL Saya Menghasilkan Ralat 'Lajur Bukan Agregat atau Kumpulan Mengikut Klausa'?. 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