NOT EXISTS 두번 사용 시 오류가 발생합니다. 0 4 2,686

by 모노 [Oracle 기초] NOT EXISTS [2023.01.25 17:05:47]


A 테이블에는 1,2,3,4,5,6

B 테이블에는    2,3

C 테이블에는      3,4

A테이블에서 B, C 테이블의 중복되는 데이터 제외하고 1, 5, 6 만 조회를 하고 싶습니다.

SELECT *

  FROM A

WHERE NOT EXISTS (SELECT 1 FROM B WHERE B.NO = A.NO)

    AND NOT EXISTS (SELECT 1 FROM C WHERE C.NO = A.NO)

NOT EXISTS 두번 사용 시 Subquery returned multiple rows where a scalar value was expected. 오류가 발생합니다.

오류 없이 A테이블의 1, 5, 6 만 조회 하는 방법이 있을까요?

by 동동동 [2023.01.25 17:22:23]
WITH A AS (
SELECT 1 NO FROM DUAL UNION ALL
SELECT 2 NO FROM DUAL UNION ALL
SELECT 3 NO FROM DUAL UNION ALL
SELECT 4 NO FROM DUAL UNION ALL
SELECT 5 NO FROM DUAL UNION ALL
SELECT 6 NO FROM DUAL
)
, B AS (
SELECT 2 NO FROM DUAL UNION ALL
SELECT 3 NO FROM DUAL
)
, C AS (
SELECT 3 NO FROM DUAL UNION ALL
SELECT 4 NO FROM DUAL
)
SELECT *
  FROM A
 WHERE NOT EXISTS (SELECT 1 FROM B WHERE B.NO = A.NO)
   AND NOT EXISTS (SELECT 1 FROM C WHERE C.NO = A.NO)
;

 

예제 쿼리로는 에러가 없는데요? 실제 쿼리의 Select 절에 사용된 함수등이 문제인것 같네요..


by pajama [2023.01.25 17:23:48]

exists 문제가 아니고 다른 조건의 서브쿼리에서 여러건이 리턴되어 그런듯 합니다. 앗 먼저 답변 주셨군요.


by 모노 [2023.01.25 17:29:58]

panama 님 말씀처럼 다른곳 조건에서 오류가 발생한거 같습니다. 고맙습니다.


by 마농 [2023.01.25 17:29:44]

전체 쿼리중에 포함되어 있는 다른 서브쿼리 확인하세요.
- Select 절의 서브쿼리
- Where 절의 서브쿼리 중 IN 이나 EXISTS 가 아닌 다른 조건의 서브쿼리
에러 메시지 그대로 입니다.
- 단일 결과를 리턴해야 할 서브쿼리에서 다중 결과 리턴

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입