首頁  >  問答  >  主體

如何解決"subquery returns more than 1 row"錯誤

<p>我有一個返回多行的查詢,還有另一個查詢,我想設定條件為這些多行中的任何一個值,所以基本上我希望子查詢看起來像這樣:</p> <pre class="brush:php;toolbar:false;">select * from table where id= (多行查詢);</pre> <p>其中<code>多行查詢</code>傳回多行。所以如果這些行的值是1、2、3,那麼我希望將id設定為1或2或3。 </p>
P粉235202573P粉235202573425 天前469

全部回覆(2)我來回復

  • P粉310754094

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

    您可以使用in()

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

    或使用連線:

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

    連接在效能方面從不是一個更糟糕的選擇,根據具體情況和您使用的資料庫,可能會提供更好的效能。

    回覆
    0
  • P粉386318086

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

    = 可以用於子查詢傳回只有一個值的情況。

    當子查詢傳回多個值時,您需要使用 IN

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

    例如:

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

    回覆
    0
  • 取消回覆