Rumah  >  Soal Jawab  >  teks badan

Bagaimana untuk menyelesaikan ralat "subquery returns more than 1 row".

<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粉235202573P粉235202573425 hari yang lalu472

membalas semua(2)saya akan balas

  • P粉310754094

    P粉3107540942023-08-22 13:21:55

    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.

    balas
    0
  • P粉386318086

    P粉3863180862023-08-22 09:08:13

    = 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个值

    balas
    0
  • Batalbalas