如何解決"subquery returns more than 1 row"錯誤
P粉235202573
P粉235202573 2023-08-21 17:36:57
0
2
466
<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粉235202573
P粉235202573

全部回覆(2)
P粉310754094

您可以使用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的条件>

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

P粉386318086

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

當子查詢傳回多個值時,您需要使用 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个值
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!