Memahami Ralat "Bukan Satu Kumpulan Kumpulan" dalam SQL
Dalam SQL, fungsi kumpulan satu kumpulan, seperti MAX(), SUM(), atau AVG(), digunakan pada kumpulan baris yang mempunyai nilai yang sama dalam lajur kumpulan yang ditentukan. Walau bagaimanapun, jika anda cuba memasukkan ungkapan lajur individu dalam senarai SELECT bersama-sama dengan fungsi kumpulan dan tidak memasukkan semua ungkapan tersebut dalam klausa GROUP BY, anda akan menghadapi ralat "bukan fungsi kumpulan tunggal".
Penjelasan Masalah
Dalam contoh pernyataan SQL anda dengan syarat:
SELECT SSN, MAX(SUM(TIME)) FROM downloads GROUP BY SSN
pertanyaan cuba mengira nilai maksimum jumlah MASA untuk setiap SSN unik dan kemudian mengembalikan SSN yang dikaitkan dengan nilai maksimum tersebut. Walau bagaimanapun, terdapat isu asas dengan pertanyaan ini:
Resolusi
Untuk menyelesaikan perkara ini ralat, anda mempunyai tiga pilihan:
Contoh Pertanyaan menggunakan Pilihan 2
SELECT SSN, MAX(SUM(TIME)) FROM downloads GROUP BY SSN, TIME
Pertanyaan ini akan mengumpulkan hasil mengikut SSN dan TIME, membolehkan anda mendapatkan semula SSN yang dikaitkan dengan jumlah maksimum MASA untuk setiap SSN.
Atas ialah kandungan terperinci Mengapa Pertanyaan SQL Saya Menghasilkan Ralat 'Bukan Fungsi Kumpulan Satu Kumpulan'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!