본문 바로가기
MySql

MySQL "하위 쿼리가 둘 이상의 행을 반환"오류에 대한 솔루션

by 베이스 공부 2020. 11. 24.
반응형

여러 행을 반환하는 하나의 쿼리와 해당 여러 행의 값 중 하나가되도록 기준을 설정하려는 다른 쿼리가 있으므로 기본적으로 하위 쿼리가 다음과 같이 보이기를 원합니다.

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

여기서 다중 행 쿼리 는 여러 행을 반환합니다. 따라서 해당 행의 값이 1,2,3이면 id를 1 또는 2 또는 3으로 설정하고 싶습니다.

 

해결 방법

 

= 는 하위 쿼리가 하나의 값만 반환 할 때 사용할 수 있습니다.

하위 쿼리가 둘 이상의 값을 반환하는 경우 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

 

참조 페이지 https://stackoverflow.com/questions/28171474

 

 

반응형

댓글