Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Membetulkan Ralat 'Lajur Tidak Sah dalam Senarai Pilih' dalam SQL GROUP BY Queries?

Bagaimana untuk Membetulkan Ralat 'Lajur Tidak Sah dalam Senarai Pilih' dalam SQL GROUP BY Queries?

Susan Sarandon
Lepaskan: 2025-01-23 01:11:10
asal
126 orang telah melayarinya

How to Fix the

Membetulkan Ralat "Lajur Tidak Sah dalam Senarai Pilih" dalam SQL GROUP BY Clauses

Pertanyaan pangkalan data menggunakan GROUP BY memerlukan pertimbangan yang teliti terhadap senarai SELECT. Semua lajur yang dipilih mestilah sama ada diagregatkan (menggunakan fungsi seperti COUNT, SUM, MIN, MAX, dsb.) atau disertakan secara eksplisit dalam klausa GROUP BY. Kegagalan untuk mematuhi peraturan ini mengakibatkan ralat "Lajur tidak sah dalam senarai pilih kerana ia tidak terkandung dalam sama ada fungsi agregat atau klausa GROUP BY".

Ralat ini timbul apabila senarai SELECT mengandungi lajur yang tidak diagregatkan mahupun sebahagian daripada GROUP BY kumpulan.

Penyelesaian melibatkan pelarasan sama ada senarai SELECT atau klausa GROUP BY.

Contoh dan Penyelesaian:

Mari kita periksa pertanyaan bermasalah ini:

<code class="language-sql">SELECT loc.LocationID, emp.EmpID
FROM Employee AS emp FULL JOIN Location AS loc
ON emp.LocationID = loc.LocationID
GROUP BY loc.LocationID</code>
Salin selepas log masuk

Ralat berlaku kerana emp.EmpID tidak diagregatkan atau tidak termasuk dalam klausa GROUP BY. Berikut ialah dua cara untuk membetulkannya:

Penyelesaian 1: Agregat Lajur Tidak Berkumpulan

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

Pertanyaan yang disemak ini mengira pekerja (COUNT(emp.EmpID)) di setiap lokasi.

Penyelesaian 2: Tambahkan Lajur pada KUMPULAN MENGIKUT Klausa

<code class="language-sql">SELECT loc.LocationID, emp.EmpID
FROM Employee AS emp FULL JOIN Location AS loc
ON emp.LocationID = loc.LocationID
GROUP BY loc.LocationID, emp.EmpID</code>
Salin selepas log masuk

Ini mengumpulkan keputusan oleh kedua-dua LocationID dan EmpID. Harap maklum bahawa ini akan menghapuskan entri LocationID pendua dengan nilai EmpID yang berbeza. Hasilnya akan menunjukkan lokasi setiap pekerja secara individu.

Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat 'Lajur Tidak Sah dalam Senarai Pilih' dalam SQL GROUP BY Queries?. 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