Rumah >pangkalan data >tutorial mysql >Bagaimana Mengendalikan Subkueri yang Mengembalikan Lebih Daripada Satu Baris?
Mengatasi Ralat "subkueri mengembalikan lebih daripada 1 baris"
Apabila berurusan dengan subkueri, adalah penting untuk memahami potensi mereka untuk mengembalikan berbilang barisan. Ini boleh membawa kepada ralat jika tidak dikendalikan dengan sewajarnya, seperti dalam kes ralat "subkueri mengembalikan lebih daripada 1 baris".
Subkueri Mengembalikan Berbilang Nilai
Intinya isu ini terletak pada hakikat bahawa subkueri yang dipersoalkan mengembalikan berbilang baris. Apabila syarat dinyatakan dalam pertanyaan utama yang bergantung pada nilai yang diperoleh daripada subkueri, ralat ini timbul.
Menggunakan IN untuk Berbilang Nilai
Untuk menyelesaikan isu ini, Operator IN harus diambil bekerja. Tidak seperti pengendali kesamaan (=), yang menjangkakan satu nilai, IN membenarkan berbilang nilai untuk ditentukan. Sintaks untuk menggunakan IN dengan subkueri ialah:
daripada jadual
di mana id IN (subkueri);
Dalam contoh ini, subkueri akan mengembalikan berbilang nilai, dan lajur id jadual akan dipadankan dengan mana-mana nilai tersebut nilai.
Contoh:
Sebagai contoh, pertimbangkan pertanyaan berikut:
DARI Pelajar
WHERE Markah = (PILIH MAX(Markah) DARI Pelajar); -- Mengembalikan hanya 1 nilai
PILIH *
DARI Pelajar
WHERE Marks IN
(SELECT Marks FROM Students ORDER BY Marks DESC LIMIT 10); -- Returns 10 values
Dalam pertanyaan pertama, subquery mengembalikan markah maksimum, iaitu satu nilai. Oleh itu, pengendali kesamaan (=) boleh digunakan. Walau bagaimanapun, dalam pertanyaan kedua, subquery mengembalikan 10 markah teratas, iaitu berbilang nilai. Oleh itu, pengendali IN diperlukan.
Dengan menggunakan IN, anda boleh mengendalikan subkueri yang mengembalikan berbilang baris dengan berkesan, memastikan kriteria dalam pertanyaan utama dipenuhi dengan sewajarnya, menyelesaikan "subkueri mengembalikan lebih daripada 1 baris" ralat dengan berkesan.
Atas ialah kandungan terperinci Bagaimana Mengendalikan Subkueri yang Mengembalikan Lebih Daripada Satu Baris?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!