[mySQL] Operand should contain 1 column(s) 에러

ouneno·2023년 3월 8일
0

Error

목록 보기
3/12

WHERE절에서 서브쿼리를 사용하다가 막혔다.


📕 에러

Operand should contain 1 column(s)
=> 해석 : 피연산자는 1개의 열을 포함해야 한다.


📕 원인

SELECT food_type
        , rest_id
        , rest_name
        , favorites
  FROM REST_INFO
 WHERE food_type IN (  
 						SELECT food_type
                              , MAX(favorites)
                         FROM REST_INFO
                       GROUP BY food_type )
ORDER BY food_type DESC

'IN' 안에서의 SELECT문은 단일컬럼을 반환해야 한다.
WHERE 절에서 조건을 건 컬럼 만큼 SELECT를 해와야 한다.


📕 추가 예시

1. WHERE (a,b,c,d) IN (SELECT a,b FROM A GROUP BY x)

(...생략)
 WHERE (food_type, favorites, rest_id) IN (  
 													SELECT food_type
                                                    , MAX(favorites)
                                               FROM REST_INFO
                                             GROUP BY food_type )
(...생략)

2. WHERE (a,b,c,d) IN (SELECT a,b FROM A GROUP BY x)

(...생략)
 WHERE (food_type, favorites, rest_id, views) IN (  
 													SELECT food_type
                                                    , MAX(favorites)
                                                    , rest_id
                                                    , views
                                               FROM REST_INFO
                                             GROUP BY food_type )
 (...생략)                                          

업로드중..


📕 결론

WHERE 절에서 서브쿼리를 사용할 시 조건을 건 컬럼을 SELECT 절에 넣을 것

WHERE (이곳에 작성한 컬럼들을) IN ( 
								SELECT (이곳에 그대로 적자)
                                FROM 테이블명 )
profile
지속적인 성장을 추구하는 새싹 개발자입니다🌱

0개의 댓글