一尘不染

解决“子查询返回多于一行”错误的方法

mysql

我有一个查询返回多行,而我想将条件设置为这些多行中的一个值的查询,所以基本上我希望子查询看起来像这样:

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

where multiple row query返回多行。因此,如果这些行中的值为1,2,3,那么我想将id设置为1或2或3。


阅读 2261

收藏
2020-05-17

共1个答案

一尘不染

= 当子查询仅返回1值时可以使用。

当子查询返回的值大于1时,您将必须使用IN

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

例如:

SELECT *
FROM Students
WHERE Marks = (SELECT MAX(Marks) FROM Students)   --Subquery returns only 1 value

SELECT *
FROM Students
WHERE Marks IN 
      (SELECT Marks 
       FROM Students 
       ORDER BY Marks DESC
       LIMIT 10)                       --Subquery returns 10 values
2020-05-17