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