구글링해보니 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만 따로 빼주어서 해결했다.

'데이터 분석 > SQL' 카테고리의 다른 글
| [day12] with recursive 재귀문 만들기 (0) | 2025.02.28 |
|---|---|
| [day11] 이런 속담이 있다. window 함수만 잘 사용하면 쿼리가 간단해진다는. (1) | 2025.02.27 |
| [day9] history 리스트에서 특정 날짜 기준으로 대여 가능 여부 확인하기 (0) | 2025.02.25 |
| [day8] 특정 열값이 MAX인 행을 그룹핑하기 (0) | 2025.02.24 |
| [day5] 날짜함수 (DATE, DATEDIFF, DATE_ADD, DATE_SUB, DAYOFMONTH, DAYOFWEEK/WEEKDAY, CURDATE) (0) | 2025.02.21 |