Rumah >pangkalan data >tutorial mysql >Bagaimana Mengendalikan Subkueri yang Mengembalikan Lebih Daripada Satu Baris?

Bagaimana Mengendalikan Subkueri yang Mengembalikan Lebih Daripada Satu Baris?

Linda Hamilton
Linda Hamiltonasal
2024-12-20 08:19:10261semak imbas

How to Handle Subqueries Returning More Than One Row?

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:

pilih *
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:

PILIH *
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!

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