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
Mary-Kate Olsenasal
2024-12-21 05:38:13886semak imbas

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

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

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

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!

Kenyataan:
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