Rumah > pangkalan data > tutorial mysql > Mengapa Pertanyaan SQL Saya Mengembalikan Ralat 'bukan fungsi kumpulan tunggal'?

Mengapa Pertanyaan SQL Saya Mengembalikan Ralat 'bukan fungsi kumpulan tunggal'?

Mary-Kate Olsen
Lepaskan: 2024-12-21 05:38:13
asal
924 orang telah melayarinya

Why Does My SQL Query Return a

Fungsi SQL "bukan fungsi kumpulan tunggal" Diterangkan

Dalam SQL, apabila menggunakan fungsi kumpulan seperti MAX, fungsi mesti digunakan pada satu kumpulan data. Ini bermakna jika anda ingin mencari nilai maksimum untuk lajur tertentu, anda juga mesti mengumpulkan data mengikut lajur itu.

Walau bagaimanapun, jika anda cuba menggunakan fungsi kumpulan pada ungkapan yang tidak dikumpulkan, anda akan menerima ralat "bukan fungsi kumpulan kumpulan tunggal." Sebagai contoh, katakan anda mempunyai jadual yang dipanggil muat turun yang mengandungi lajur untuk muat turun oleh pelanggan:

SELECT MAX(SUM(TIME))
FROM downloads
GROUP BY SSN
Salin selepas log masuk

Pertanyaan ini sah kerana fungsi MAX digunakan pada kumpulan data (muat turun oleh SSN) . Walau bagaimanapun, jika anda cuba menambah lajur SSN pada penyataan pilih, seperti ini:

SELECT SSN, MAX(SUM(TIME))
FROM downloads
GROUP BY SSN
Salin selepas log masuk

Anda akan menerima ralat "bukan fungsi kumpulan tunggal" kerana lajur SSN tidak disertakan dalam KUMPULAN MENGIKUT klausa. Ini bermakna SQL tidak dapat menentukan kumpulan data mana lajur SSN milik, dan oleh itu tidak boleh menggunakan fungsi MAX padanya.

Untuk menyelesaikan ralat ini, anda mempunyai tiga pilihan:

  • Lepaskan fungsi MAX daripada penyata pilih, yang akan memberikan anda jumlah muat turun untuk setiap SSN.
  • Lepaskan lajur SSN daripada penyata pilih, yang akan memberi anda jumlah masa maksimum yang dimuat turun oleh mana-mana pelanggan.
  • Tambah lajur SSN pada klausa GROUP BY, seperti ini:
SELECT SSN, MAX(SUM(TIME))
FROM downloads
GROUP BY SSN, TIME
Salin selepas log masuk

Ini akan memberikan anda jumlah masa maksimum yang dimuat turun untuk setiap kombinasi SSN dan masa yang unik.

Atas ialah kandungan terperinci Mengapa Pertanyaan SQL Saya Mengembalikan Ralat 'bukan fungsi kumpulan tunggal'?. 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