본문 바로가기
DataBase/Oracle

SELECT 1 FROM 테이블명;

by 글발 2023. 8. 30.
728x90
반응형

SELECT 1 FROM 테이블명;

  • 해당 테이블의 ROW 개수만큼 1을 출력
  • 여기서 1은 TRUE를 의미
  • WHERE 조건문과 함께 쓰면 해당 조건을 만족하면 1을 반환
  • 보통 다중행 서브 쿼리문에서 WHERE 조건절에 (NOT)EXISTS 안의 서브쿼리에서 사용
  • EXISTS로 SELECT * FROM EMP 또는 SELECT 1 FROM EMP 등이 논리식에 사용될 때는 실제 값이 아닌 값의 존재 유무가 중요하기 때문에 간단하게 SELECT 1 FROM EMP를 사용

SELECT 1 FROM EMPLOYEES;를 실행하면 SELECT COUNT(*) FROM EMPLOYEES 만큼의 1이 나온다.

 

WHERE 조건문을 추가해보자.

WHERE 조건문과 함께 쓰면 해당 조건을 만족하면 1을 반환하게 된다.

만족하지 않으면 반환값이 없다.(NULL)

 

WHERE 문에서  EXISTS과 함께 조건문으로 사용해보자.

직원테이블에서 각 직원들의 부서ID가 부서 테이블의 부서ID에 존재할 때 직원ID와 직원 이름을 뽑는 쿼리이다.

위의 실행 결과 건수와 EMPLOYEES 테이블의 건수를 비교해보자.

먼저 EMP 건수는 107이고 

위의 SELECT 1을 사용한 쿼리의 건수는 106이다.

무엇을 의미하는가?

직원 테이블에 있는 한 직원의 부서ID가 부서테이블에 없다는 것이다.

EXISTS 문에서 한 로우가 TRUE가 안되었기 때문에 걸러진 것이다.

확인해보자.

직원 테이블의 DEPARTMENT_ID에 NULL이 존재한다. 

하지만 부서테이블을 조회해보니 NULL이 없었다.

따라서 한 건이 걸러진 것이다.

'DataBase > Oracle' 카테고리의 다른 글

계층형쿼리  (0) 2023.10.13
LISTAGG  (0) 2023.10.13
MERGE문  (0) 2023.09.14
INSERT ALL  (0) 2023.08.30
오라클 통계정보  (0) 2023.08.29