데이터 분석/SQL

[day10] operand should contain 1 column(s)

경 민 2025. 2. 26. 18:35

구글링해보니 operand should contain 1 column(s) 오류는 주로 인라인뷰 사용할 때 주로 나타나는 메세지라고 한다. 

의미는 비교할 칼럼 수가 다르기 때문에 제대로 비교할 수가 없다는 뜻 !

문제를 예로 들자면

SELECT ID,
        NAME,
        HOST_ID
FROM PLACES
WHERE HOST_ID IN (
SELECT HOST_ID,
        COUNT(*) AS CNT
FROM PLACES
GROUP BY 1
HAVING CNT >= 2
   )
ORDER BY 1

WHERE절을 보면 'HOST_ID가 서브쿼리 안에 있는 HOST_ID에 IN할 때'라는 조건인데,

서브 쿼리의 열 개수가 2개이다. (HOST_ID, CNT)

즉, HOST_ID가 HOST_ID와 1:1로 비교될 수 없는 상태.

SELECT ID,
        NAME,
        HOST_ID
FROM PLACES
WHERE HOST_ID IN (
SELECT HOST_ID
FROM
    (
SELECT HOST_ID,
        COUNT(*) AS CNT
FROM PLACES
GROUP BY 1
HAVING CNT >= 2
    ) A
)
ORDER BY 1

그래서 서브쿼리를 하나 더 만들어서 HOST_ID만 따로 빼주어서 해결했다.