Oracle

Oracle EXISTS 서브쿼리 - 존재하는지 안하는지 확인하는 방법

나는아이스크림 2021. 5. 24. 12:00
728x90

Oracle 에서 해당 조건을 만족하는 행이 있는지 없는지 확인하기 위해 EXISTS 라는 서브쿼리가 있다

 

 

 

예를 들면

선수정보를 가지고 있는 PLAYER 라는 테이블이 있다

PLAYER_ID
PLAYER_POSITION
TEAM_ID

PLAYER

 

 

 

 

 

TEAM_ID 가 K02 이고 PLAYER_POSITION 이 GK 인 선수를 조회하고 싶다는 쿼리를 작성해 보자

SELECT *
FROM PLAYER P1
WHERE P1.TEAM_ID = 'K02' 
    AND EXISTS (
      SELECT 1
      FROM PLAYER P2
      WHERE P1.TEAM_ID = P2.TEAM_ID AND P2.POSITION = 'GK'
  );

EXISTS 는 무조건 서브쿼리로 작성해야한다

또한 메인쿼리에서 사용한 컬럼을 그대로 사용할 수 있다

 

 

 

서브쿼리를 만족하는 행이 하나라도 있다면 조회함으로

서브쿼리의 SELECT 는 1로 조회해도 괜찮다

 

 

 

또한 EXISTS의 반대인 NOT EXISTS도 사용하여 포함하지 않는 행을 구할 수 있다 

728x90
728x90