티스토리 뷰

카테고리 없음

On절과 Where 절의 차이

✨✨✨✨✨✨✨ 2022. 3. 5. 18:18
반응형

sql문은 실행될 때 순서가 아래와 같다.

 

FROM -> ON -> JOIN -> WHERE -> ...

 

즉, ON절 후에 JOIN을 하고 WHERE을 한다.

 

아래 예제를 확인해보자,

 

Test Table

AA BB
1 4
2 5
3 6

 

Test2 Table

AA BB
1 7
2 8

 

 

위와 같이 테이블이 있다면 아래 쿼리의 결과는 다음과 같다.

SELECT *
FROM test1 t1 LEFT JOIN test2 t2
ON (t1.aa = t2.aa)
WHERE t2.cc = 7;
AA BB AA CC
1 4 1 7

 

 

 

만약 ON절에 t2.cc = 7 이라는 조건을 where이 아닌 on절에 넣으면 어떤 결과가 나올까?

SELECT *
FROM test1 t1 LEFT JOIN test2 t2
ON (t1.aa = t2.aa AND t2.cc = 7);
AA BB AA CC
1 4 1 7
2 5 null null
3 6 null null

 

 

위와 같이 2개의 행이 더 생긴다.

왜그런 것일까?

 

Query의 실행순서는 다음과 같다. [ FROM -> ON -> JOIN -> WHERE -> ... ]

그렇기에 1. SELECT를 실행하면 해당 테이블이 각각 실행이되고, 

      SELECT * FROM test1 t1;

      SELECT * FROM test2 t2;

 

 

2. ON절을 LEFT 에 있는 Table 기준으로 실행하기에

    오른쪽에 있는 test2테이블을 아래 조건을 실행한다.

 ON (t1.aa = t2.aa AND t2.cc = 7)

 

Test2 Table

AA BB
1 7
2 8

 

 

3. 후에 test1, test2 각각의 테이블을 left Table기준으로 outer join을 실행한다.

AA BB AA CC
1 4 1 7
2 5 null null
3 6 null null

 

 

결과적으로 ON절과 WHERE절의 차이는

ON 이 먼저 실행되고 각각의 테이블을 JOIN한 후 WHERE절이 실행된다.

 

 


 

아래 내용은 재미삼아..ㅎㅎ

 

 

select * from test1;

AA  BB  

1 4
2 5
3 6


select * from test2;

AA  CC  

1 7
2 8



-- 0)
SELECT *
FROM test1 t1 LEFT JOIN test2 t2;

AA  BB  AA  CC  

1 4 1 7
1 4 2 8
2 5 1 7
2 5 2 8
3 6 1 7
3 6 2 8



-- 1)
SELECT *
FROM test1 t1 LEFT JOIN test2 t2
ON (t1.aa = t2.aa);

AA  BB  AA  CC  

1 4 1 7
2 5 2 8
3 6 null null




-- 1-2)
SELECT *
FROM test1 t1 right JOIN test2 t2
ON (t1.aa = t2.aa);

AA  BB  AA  CC  

1 4 1 7
2 5 2 8



-- 1-3)
SELECT *
FROM test1 t1 LEFT JOIN test2 t2
ON (t1.aa = t2.aa)
WHERE t2.cc = 7;

AA  BB  AA  CC  

1 4 1 7



-- 2)
SELECT *
FROM test1 t1 LEFT JOIN test2 t2
ON (t1.aa = t2.aa AND t2.cc = 7);

AA  BB  AA  CC  

1 4 1 7
2 5 null null
3 6 null null




-- 3)
SELECT *
FROM test1 t1 LEFT JOIN test2 t2
ON (t1.aa = t2.aa OR t2.cc = 7);

AA  BB  AA  CC  

1 4 1 7
2 5 1 7
2 5 2 8
3 6 1 7

 

반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함