Rumah > pangkalan data > tutorial mysql > Mengapa Pertanyaan SQL SELECT Saya dengan GROUP BY Mengembalikan Ralat 'Lajur Tidak Sah'?

Mengapa Pertanyaan SQL SELECT Saya dengan GROUP BY Mengembalikan Ralat 'Lajur Tidak Sah'?

Linda Hamilton
Lepaskan: 2025-01-23 01:07:11
asal
861 orang telah melayarinya

Why Does My SQL SELECT Query with GROUP BY Return an

SQL GROUP BY Ralat lajur tidak sah dalam pertanyaan

Apabila memilih lajur dalam pertanyaan SQL yang mengandungi klausa GROUP BY, ralat mungkin berlaku jika lajur tidak disertakan dalam fungsi agregat mahupun dalam klausa GROUP BY. Ralat ini biasanya kelihatan seperti: "Lajur 'Employee.EmpID' tidak sah dalam senarai pilih kerana ia tidak disertakan dalam fungsi agregat mahupun dalam klausa GROUP BY".

Sebab untuk ini adalah peraturan nilai tunggal. Dalam pertanyaan GROUP BY, output untuk lajur tidak teragregat mestilah unik dalam setiap kumpulan. Walau bagaimanapun, memilih satu lajur tanpa mengagregatkannya, seperti 'Employee.EmpID', menghasilkan hasil yang tidak jelas.

Untuk menyelesaikan ralat ini, masukkan lajur dalam klausa GROUP BY atau gunakan fungsi agregat padanya. Contohnya, jika anda ingin mengira bilangan pekerja bagi setiap lokasi, gunakan pertanyaan berikut:

<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 ini mengira bilangan pekerja di setiap lokasi sambil masih memberikan ID lokasi untuk setiap kumpulan. Sebagai alternatif, jika anda ingin memilih semua lajur untuk setiap lokasi tetapi hanya menunjukkan ID pekerja terkini (nilai maksimum), anda boleh menggunakan fungsi agregat MAX:

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

Dengan menggunakan fungsi agregat atau memasukkan lajur dalam klausa GROUP BY, anda boleh memastikan bahawa data yang diambil adalah jelas dan mematuhi peraturan nilai tunggal.

Atas ialah kandungan terperinci Mengapa Pertanyaan SQL SELECT Saya dengan GROUP BY Mengembalikan Ralat 'Lajur Tidak Sah'?. 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