Rumah >pangkalan data >tutorial mysql >Mengapa Pertanyaan SQL Saya Melemparkan Ralat 'Lajur Tidak Sah dalam Senarai Pilihan' Berkaitan dengan GROUP BY?
Ralat pertanyaan SQL: Lajur tidak sah dalam senarai PILIH kerana ia tidak mematuhi fungsi agregat atau klausa GROUP BY
Apabila melaksanakan pertanyaan SQL, anda mungkin menghadapi ralat berikut:
<code>Column 'Column_Name' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.</code>
Sebab ralat ini adalah seperti berikut:
Pengumpulan data
Dalam klausa KUMPULAN OLEH, baris dengan nilai lajur yang sama ditentukan untuk dikumpulkan bersama. Contohnya, dalam pertanyaan berikut:
<code>SELECT loc.LocationID, emp.EmpID FROM Employee AS emp FULL JOIN Location AS loc ON emp.LocationID = loc.LocationID GROUP BY loc.LocationID</code>
Pekerja dikumpulkan mengikut LocationID mereka. Walau bagaimanapun, jika anda cuba memasukkan lajur dalam senarai PILIH yang tiada dalam klausa KUMPULAN OLEH (contohnya, emp.EmpID), anda akan mendapat ralat ini kerana ia tidak dapat ditentukan EmpID yang sepatutnya dipilih untuk setiap nilai kumpulan.
Fungsi pengagregatan
Fungsi pengagregatan seperti SUM, COUNT, MAX dan MIN) boleh digunakan untuk mendapatkan maklumat ringkasan untuk data terkumpul . Jika anda memasukkan lajur bukan agregat dalam senarai SELECT tetapi ia bukan sebahagian daripada klausa KUMPULAN OLEH, anda mesti menggunakan fungsi agregat padanya.
Sebagai contoh, jika anda ingin mengira bilangan pekerja bagi setiap lokasi, anda akan menggunakan:
<code>SELECT loc.LocationID, COUNT(emp.EmpID) FROM Employee AS emp FULL JOIN Location AS loc ON emp.LocationID = loc.LocationID GROUP BY loc.LocationID</code>
Ini memastikan bahawa untuk setiap lokasi, hanya kiraan pekerja dikembalikan, bukannya senarai ID pekerja individu.
Penyelesaian
Untuk menyelesaikan ralat ini anda mesti:
Atas ialah kandungan terperinci Mengapa Pertanyaan SQL Saya Melemparkan Ralat 'Lajur Tidak Sah dalam Senarai Pilihan' Berkaitan dengan GROUP BY?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!