Rumah > pangkalan data > tutorial mysql > Mengapa Pertanyaan SQL Saya Melemparkan Ralat 'Lajur Tidak Sah dalam Senarai Pilihan' Berkaitan dengan GROUP BY?

Mengapa Pertanyaan SQL Saya Melemparkan Ralat 'Lajur Tidak Sah dalam Senarai Pilihan' Berkaitan dengan GROUP BY?

Barbara Streisand
Lepaskan: 2025-01-23 01:21:10
asal
344 orang telah melayarinya

Why Does My SQL Query Throw a

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

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

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

Ini memastikan bahawa untuk setiap lokasi, hanya kiraan pekerja dikembalikan, bukannya senarai ID pekerja individu.

Penyelesaian

Untuk menyelesaikan ralat ini anda mesti:

  • Tambah lajur pada klausa GROUP BY: Ini juga akan mengumpulkan data berdasarkan lajur tambahan.
  • Gunakan fungsi agregat pada lajur dalam senarai PILIH: Ini akan mengira maklumat ringkasan untuk setiap kumpulan berdasarkan lajur bukan agregat.

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!

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