Bagaimana untuk menyelesaikan ralat "subquery returns more than 1 row".
P粉235202573
P粉235202573 2023-08-21 17:36:57
0
2
543
<p>Saya mempunyai pertanyaan yang mengembalikan berbilang baris dan pertanyaan lain di mana saya ingin menetapkan syarat menjadi nilai bagi mana-mana satu daripada berbilang baris ini, jadi pada asasnya saya mahu subkueri kelihatan seperti ini: </p> ; <pre class="brush:php;toolbar:false;">pilih * dari meja di mana id= (pertanyaan berbilang baris);</pre> <p>Di mana <kod>Pertanyaan berbilang baris</kod> Jadi jika nilai baris ini ialah 1, 2, 3, maka saya mahu id ditetapkan kepada 1 atau 2 atau 3. </p>
P粉235202573
P粉235202573

membalas semua(2)
P粉310754094

Anda boleh menggunakan in():

select * 
from table
where id in (多行查询)

Atau gunakan pautan:

select distinct t.* 
from source_of_id_table s
join table t on t.id = s.t_id
where <source_of_id_table的条件>

Sambungan bukanlah pilihan yang lebih teruk dari segi prestasi, dan bergantung pada situasi dan pangkalan data yang anda gunakan, mungkin memberikan prestasi yang lebih baik.

P粉386318086

= boleh digunakan apabila subkueri hanya mengembalikan satu nilai.

Apabila subkueri mengembalikan berbilang nilai, anda perlu menggunakan IN:

select * 
from table
where id IN (multiple row query);

Contohnya:

SELECT *
FROM Students
WHERE Marks = (SELECT MAX(Marks) FROM Students)   --子查询只返回一个值

SELECT *
FROM Students
WHERE Marks IN 
      (SELECT Marks 
       FROM Students 
       ORDER BY Marks DESC
       LIMIT 10)                       --子查询返回10个值
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan