반응형
해당 오류가 났던 쿼리는 아래와 같았다.
SELECT NAME
FROM USER
WHERE ID =
(
SELECT DISTINCT PARENT_ID
FROM USER
WHERE(PARENT_ID = 'test' OR ID = 'test')
)
계정 하나에 여러개의 부계정을 사용하고 있는 데이터를 저장하는 테이블이다.
WHERE절에 있는 서브쿼리에서 보면, 부모계정을 중복을 제거하고 1개만 가지고 오는데,
그 조건절에 보면 부모 ID가 test거나 자신의 ID가 test인 데이터를 찾는다.
그리고 데이터에서 본인 자신이 부모계정인 데이터의 부모 컬럼은 NULL로 들어가있다.
때문에 NULL과 test 2건을 리턴해서 발생하는 오류였다.
아래와 같이 NULL 제외 구문을 추가해서 오류를 해결해줬다.
SELECT NAME
FROM USER
WHERE ID =
(
SELECT DISTINCT PARENT_ID
FROM USER
WHERE(PARENT_ID = 'test' OR ID = 'test')
AND PARENT_ID IS NOT NULL
)
그런데 여기서 궁금한 점이 생겼다.
만약 부모계정이 아직 아무 부계정을 가지고 있지 않다면...?
내일 다시 쿼리를 확인해봐야겠다.
반응형
댓글