본문 바로가기

📝 ErrorNote

[MySQL/MariaDB] ERROR 1241 (21000): Operand should contain 1 column(s)

에러

Operand should contain 1 column(s)

 

피연산자는 한개의 컬럼만 포함해야한다. 

 

원인 

select * from image where id in (select imageId, count(*) likeCount from likes group by imageId  order by likeCount desc);

 

해당 쿼리를 실행하려는데 서브 쿼리가 가져오는 컬럼이 2개여서 에러가 발생했다. 

 

해결

인라인 뷰 사용하기 

select imageId 
from (
	select imageId, count(*) likeCount 
	from likes 
	group by imageId
	order by likeCount desc
) inline_view_table;

 

✏️ 인라인 뷰란? 

FROM 절 내부에서 사용되는 서브 쿼리를 말한다. 인라인 뷰는 하위 쿼리의 결과를 테이블처럼 사용하여 주 쿼리와 함께 사용한다. 

 

이렇게 인라인 뷰를 사용해서 우리가 만든 쿼리의 결과에서 imageId 만을 가져오도록 설정한다. 

 

그리고 난 다음 실행 시키면 다음의 오류는 생기지 않는다.