Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Die Lösung für die Unterabfrage gibt mehr als 1 Zeilenfehler zurück

= kann verwendet werden, wenn die Unterabfrage nur 1 Wert zurückgibt.

Wenn die Unterabfrage mehr als 1 Wert zurückgibt, müssen Sie IN verwenden :

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

Zum Beispiel:

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