EXIST를 사용한 이 SQL문이 잘 이해가 안되는데 좀 세세하게 설명해주실분 계시나요 ㅠㅠ
SELECT에 왜 1을 썼는지하며,, EXIST가 조건을 만족하는 행을 찾으면 바로 검색이 중단된다는데 이 SQL문에서는
어떻게 적용된건지 잘 이해가 안갑니다..! 디비 초보좀 도와주세용 ㅠ
다음은 EXISTS 서브쿼리를 사용하여 '20120501' 부터 '20120502' 사이에 경기가 있는 경기장을 조회하는 SQL문이다.
[예제] SELECT STADIUM_ID ID, STADIUM_NAME 경기장명
FROM STADIUM A
WHERE EXISTS (SELECT 1
FROM SCHEDULE X
WHERE X.STADIUM_ID = A.STADIUM_ID AND X.SCHE_DATE BETWEEN '20120501' AND '20120502')
[실행 결과] ID 경기장명
--- ---------------------------------
B01 인천월드컵경기장
B04 수원월드컵경기장
B05 서울월드컵경기장
C02 부산아시아드경기장 4개의 행이 선택되었다.
exists 문은 참 거짓을 반환하는 함수라고 생각하세요.
exists 문 안에 쿼리 결과가 1줄 이상 있으면 참,
하나도 없으면 거짓이라고 생각하면 됩니다.
row 단위로 참 거짓을 판단하기 때문에 select 절에 어떤 컬럼이 와도 됩니다.
어떤 컬럼이 와도 상관 없기 때문에 그냥 편하게 1을 적어준 거구요.
1 row만 있어도 참이기 때문에 1 row 검색되는 순간 더이상 검색하지 않습니다.
EXISTS 문안에
X.STADIUM_ID = A.STADIUM_ID
조건으로 인해 STADIUM의 STADIUM_ID를 하나 받아와서
SCHEDULE 에 해당 ID와 일치하는 정보가 있는지 찾아서 있으면
결과 ROW로 던져주고 없으면 다음 STADIUM_ID로 진행하게 됩니다.