Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Membetulkan Ralat 'Subquery Mengembalikan Lebih Daripada 1 Baris' dalam SQL?

Bagaimanakah Saya Boleh Membetulkan Ralat 'Subquery Mengembalikan Lebih Daripada 1 Baris' dalam SQL?

Susan Sarandon
Lepaskan: 2024-12-03 14:16:19
asal
789 orang telah melayarinya

How Can I Fix the

Mengatasi Ralat "Subkueri Mengembalikan Lebih Daripada 1 Baris"

Menetapkan Kriteria dengan Berbilang Nilai Subkueri

Menghadapi "subkueri mengembalikan lebih daripada 1 baris " ralat apabila cuba menetapkan kriteria berdasarkan keputusan subkueri boleh mengecewakan. Ralat ini berlaku apabila subkueri anda mengembalikan berbilang baris, tetapi pertanyaan utama anda hanya mengharapkan satu.

Untuk menyelesaikan isu ini, adalah penting untuk memahami perbezaan antara pengendali kesamarataan (=) dan pengendali IN. Operator kesamarataan hanya boleh membandingkan dua nilai, dan ia menjangkakan subquery akan mengembalikan satu nilai. Sebaliknya, operator IN membenarkan anda membandingkan nilai kepada berbilang nilai atau set nilai yang dikembalikan oleh subkueri.

Menggunakan Operator IN

Apabila subkueri anda mengembalikan berbilang baris, anda harus menggunakan operator IN untuk membandingkan nilai pertanyaan utama anda dengan berbilang nilai tersebut. Sintaks adalah seperti berikut:

SELECT *
FROM table
WHERE id IN (subquery)
Salin selepas log masuk

Dalam contoh ini, subkueri akan mengembalikan berbilang baris dan pertanyaan utama akan menyemak sama ada lajur id sepadan dengan mana-mana nilai baris tersebut.

Contoh Penggunaan

Pertimbangkan perkara berikut senario:

  • Pertanyaan 1: SELECT id FROM table1 mengembalikan berbilang baris dengan nilai 1, 2 dan 3.
  • Query 2: SELECT * FROM table2 WHERE id = (SELECT id FROM table1) akan mengakibatkan ralat kerana subquery mengembalikan berbilang baris.

Untuk menyelesaikan ralat ini, ubah suai Pertanyaan 2 untuk menggunakan operator IN:

SELECT * 
FROM table2 
WHERE id IN (SELECT id FROM table1)
Salin selepas log masuk

Sekarang, Pertanyaan 2 akan mendapatkan semula rekod dengan betul dari jadual2 di mana lajur id sepadan mana-mana nilai yang dikembalikan oleh subquery.

Kesimpulan

Memahami perbezaan antara operator kesamarataan dan operator IN adalah penting apabila bekerja dengan subquery. Dengan menggunakan operator IN, anda boleh mengatasi ralat "subquery returns more than 1 row" dan menetapkan kriteria dengan berkesan berdasarkan berbilang nilai yang diperoleh daripada subquery.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membetulkan Ralat 'Subquery Mengembalikan Lebih Daripada 1 Baris' dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan