SELECT 'X'나 SELECT 1은 조건절을 만족하는 table의 행의 갯수만큼 해당 문자열을 출력하겠다는 의미이다.
SELECT 'X'
FROM TABLE
이 SQL구문은 TABLE의 행개수만큼 'X'가 나온다.
SELECT 1
FROM TABLE
이 SQL구문은 TABLE의 행개수만큼 1이 나온다.
이 table에 추가하는 조건절에 따라 결과가 달라질텐데, SELECT 'X'나 1의 결과도 그에 따라 달라진다.
SELECT 'X'나 SELECT 1에서 주의깊게 봐야할 점은 출력값이 아닌, 출력값이 나오는 과정이다.
select * from emp a
where not exists ( select 'X'
from emp2 b
where a.empno=b.empno);
위 SQL문과 같이 주로 EXIST, NOT EXIST에서 존재여부를 확인할때 많이 쓰인다.
주로 EXIST, NOT EXIST에서 쓰여 해당 조건을 만족하는 경우에 1을 출력하는데, 즉 emp table에서 emp2 table에 존재하는 사원에 대해서만 출력하겠다는 의미이다.
이때 NOT EXISTS 구문은 출력값 그 자체보다는, 존재유무를 확인하기위해 사용한다.
※ 유의할 점
Exist 구문은, 가져온 table을 exist 구문에 넣어 해당 결과가 존재한다면 출력하고 존재하지 않는다면 출력하지 않는다.
따라서 select 'X'의 결과는 중요한 것이 아니고, not exists로 넘어가는 emp table에 유의하면서 a.empno = b.empno가 성립하는 결과가 존재할때 최종적으로 select * from emp 결과를 출력한다는 과정이 중요하다.
어차피 해당 결과가 존재할때 emp table 결과에서 추출(다듬는)하는 과정이므로, EXIST 구문내의 select에서 존재유무만을 중심으로 확인한다면 SELECT 'X'나 SELECT 1과 같은 형식적인 구문을 사용한다.
SELECT 'X' / SELECT 1의 개념 - https://codedragon.tistory.com/5885
EXIST 구문에서 사용하는 SELECT 'X' - https://database.sarang.net/?inc=read&aid=27212&criteria=oracle&subcrit=&id=&limit=20&keyword=imp&page=2