如何解决"subquery returns more than 1 row"错误
P粉235202573
P粉235202573 2023-08-21 17:36:57
0
2
468
<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学习者快速成长!