728x90
JOIN에 AND
SELECT F1.EMP_NO 직원번호, F1.FAM_NM 쌍둥이1, F2.FAM_NM 쌍둥이2, 'Y' "쌍둥이 여부"
FROM FAM_C F1
JOIN FAM_C F2 ON(F1.EMP_NO = F2. EMP_NO)
AND F1.FAM_NM <> F2.FAM_NM
AND F1.REL_TYPE_CD = 'A27'
AND F1.REL_TYPE_CD = F2.REL_TYPE_CD
AND F1.BIRTH_YMD = F2.BIRTH_YMD
;
JOIN + WHERE절에 AND
SELECT F1.EMP_NO 직원번호, F1.FAM_NM 쌍둥이1, F2.FAM_NM 쌍둥이2, 'Y' "쌍둥이 여부"
FROM FAM_C F1
JOIN FAM_C F2 ON(F1.EMP_NO = F2. EMP_NO)
WHERE F1.FAM_NM <> F2.FAM_NM
AND F1.REL_TYPE_CD = 'A27'
AND F1.REL_TYPE_CD = F2.REL_TYPE_CD
AND F1.BIRTH_YMD = F2.BIRTH_YMD
;
위 둘의 차이는 뭘까?
JOIN에 AND 조회 결과
JOIN + WHERE절에 AND
조회 결과 행(ROW) 수도 같고 직원번호를 하나씩 따져봐도 같다
그럼 차이가 없는 걸까?
답은 NO
현재는 내부조인(INNER JOIN)이라 차이가 없지만 외부조인(OUTER JOIN)으로 들어가면 달라지게 된다.
FROM절에서 조건을 걸어서 이미 조건대로 걸러지는 것과
FROM절의 데이터를 토대로 WHERE에서 조건을 거는 것의 차이
쿼리의 작동 순서가 FROM절 WHERE절 순이기 때문
<쿼리 동작 순서>
- FROM
- WHERE
- GROUP BY
- HAVING
- SELECT
- ORDER BY
728x90
반응형
'SQL > Oracle' 카테고리의 다른 글
[SQL][Oracle] 서브쿼리로 조건 VS WHERE로 조건 차이는? (0) | 2022.10.06 |
---|---|
[SQL][Oracle] 계층형 질의(계층형 쿼리, Hierarchical Query) 동작순서 with 예시 (0) | 2022.08.26 |
[SQL][Oracle] 계층형 질의(계층형 쿼리, Hierarchical Query) (1) | 2022.08.25 |
[SQL][Oracle] SELECT, DISTINCT, 별칭, 리터럴, 비교연산자 (0) | 2022.03.12 |
[SQL][Oracle] ESCAPE 식별자, IS NULL, IN, 연결연산자 || (0) | 2022.03.12 |