나이가 드는건가... 아니면 편하게 썼던 Oracle에 너무 익숙했던 탓인가...
Query를 짜는데... Join 절이 헤깔린다. ㅜ.ㅜ
join 절은 어떻게 사용하느냐에 따라 성능차이가 현격하게 차이나는 조건절 중 하나이다.
용도별로 적절하게 사용하여야 하는지에 대해서 이참에 제대로 된 문법도 되뇌일겸... 정리도 해놓고
기록도 해놓을겸 포스팅한다.
1. Left Join (A)
SELECT *
FROM TableA a
LEFT JOIN TableB b
ON a.Key = b.Key
2. Left Join (A-B)
SELECT *
FROM TableA a
LEFT JOIN TableB b ON a.Key = b.key
WHERE b.Key IS NULL
3. Right Join (B-A)
SELECT *
FROM TableA a
RIGHT JOIN TableB b ON a.Key = b.Key
WHERE b.Key IS NULL
4. Right Join (B)
SELECT *
FROM TableA a
RIGHT JOIN TableB b ON a.Key = b.Key
5. Inner Join (A^B)
SELECT *
FROM TableA a
INNER JOIN TableB b ON a.Key = b.Key
--> SELECT * FROM Table a, Table b Where a.Key = b.Key
6. Full Join (A+B) - (A^B)
SELECT *
FROM TableA a
FULL JOIN TableB b On a.Key = b.Key
WHERE b.Key IS NULL
OR a.Key IS NULL
SELECT *
FROM TableA a
FULL OUTER JOIN TableB b ON a.Key = b.Key
WHERE a.Key IS NULL
OR b.Key IS NULL
7. Full Join (A+B)
SELECT *
FROM TableA a
FULL JOIN TableB b ON a.Key = b.Key
SELECT *
FROM TableA a
FULL OUTER JOIN TableB b ON a.Key = b.Key
뭐... DB마다 조금씩 다르기는 하겠지만 표준 문법을 포스팅 한다는 의미에서의 글이다.
MySQL / MariaDB의 경우 Full Outer Join을 지원하지 않는다.
뭐... 무료 DB니까... 그정도는 사용자가 알아서 만들어서 사용하라는 거룩한 계시일까? ㅎㅎㅎ
SELECT * FROM TableA a LEFT JOIN TableB b
UNION
SELECT * FROM TableA a RIGHT JOIN TableB b
기타 DB별 지원하고 미지원하는 것들은 그때그때 프로젝트마다 구분해서 사용하여야 할듯~!!!
'Blog > DB' 카테고리의 다른 글
SSMS에서 Table Design 시 Comment(설명) 항목 보기 (0) | 2018.12.03 |
---|---|
Oracle Table / Column 정보 조회 Query (0) | 2018.11.28 |
MS-SQL에서 Table정보를 Query로 조회할 때 (0) | 2018.10.15 |
JDBC로 연결되는 Tool 사용시 유용한 Altibase Query (0) | 2013.12.03 |
Altibase Table 정보 조회 Query (0) | 2013.11.29 |