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

yannie·2024년 10월 11일

Error

목록 보기
1/2

프로그래머스 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기 문제 풀이 중 발생한 오류에 대해 정리해보고자 한다.

Operand should contain 1 column(s)

오류 설명

  • 오류 메시지: Operand should contain 1 column(s)
  • 이 오류는 SQL에서 서브쿼리(하위 쿼리)가 하나의 컬럼을 반환해야 하는데, 여러 컬럼을 반환하려 할 때 발생한다.

오류 원인

쿼리의 IN 조건문에서 문제 발생:

ON F.BOARD_ID = B.BOARD_ID IN (SELECT B.BOARD_ID, MAX(VIEWS) FROM USED_GOODS_BOARD ORDER BY VIEWS DESC)

IN 연산자는 하나의 컬럼이나 값만 비교할 수 있지만,
서브쿼리가 B.BOARD_ID와 MAX(VIEWS) 두 개의 컬럼을 반환하려 하기 때문에 이 오류가 발생한다.

해결 방법

서브쿼리에서 하나의 컬럼만 반환하도록 수정해야 한다.

결론

WHERE절에서 서브쿼리를 사용할 시 조건을 건 컬럼을 똑같이 SELECT절에 넣어야 한다.

	WHERE (컬럼1, 컬럼2) IN (SELECT(컬럼1, 컬럼2)
    						FROM 테이블명)

0개의 댓글