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

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

在哪里multiple row query返回多行。

答案

=当子查询仅返回 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

来自: stackoverflow.com