일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 추후정리
- 네이티브쿼리
- querydsl
- WeNews
- docker명령어
- 외부키
- 적용우선순위
- foreignkey
- 테스트메소드
- 예약
- ㅔㄴ션
- MySQL
- 서브쿼리
- 검색
- appspec
- 참조키
- application.yml
- appspec.yml
- AuthenticationEntryPoint
- EC2
- 커밋메세지수정
- 2 > /dev/null
- 메소드명
- 메세지수정
- subquery
- 포트
- 테스트
- 컨테이너실행
- Query
- ubuntu
- Today
- Total
제뉴어리의 모든것
LEFT JOIN 과 RIGHT JOIN 본문
LEFT JOIN 과 RIGHT JOIN
left, right등의 outer join은 기준이 되는 테이블이 무엇이냐에 따른 것입니다.
결과가 왼쪽 테이블 전체 데이터 대상이라면 left를 ,오른쪽 테이블의 전체 데이터가 대상이라면 right를 사용합니다.
1. 조인 대상 테이블
(1) EMP 테이블
SELECT * FROM EMP;
(2) DEPT 테이블
SELECT * FROM DEPT;
2. LEFT JOIN 과 RIGHT JOIN 차이
(1) [ A left join B on (a.id = b.id) ]
LEFT OUTER JOIN은 오른쪽 테이블(아래 예제에서 emp테이블)에 조인시킬 컬럼의 값이 없는 경우 사용한다.
SELECT * FROM dept d LEFT OUTER JOIN emp e ON d.deptno = e.deptno;
A(왼쪽) 테이블과 B(오른쪽) 테이블을 조인을 걸건데, B테이블에 A테이블과 맵핑되는 값이 있건 없건 A의 값은 반드시 모두 나오게 됩니다.
(outer는 적어도 그만 안 적어도 그만이지만, 명시적으로 적어주는 것이 좋습니다 .^^)
위의 결과를 보면, A 에 있는 모든 값이 나오고,B와 맵핑 되지 않는 값은 NULL 이 됨을 볼 수 있습니다.
(2) [ A right join B on (a.id = b.id) ]
RIGHT OUTERL JOIN은 왼쪽 테이블(아래 예제에서 emp테이블)에 조인시킬 컬럼의 값이 없는 경우 사용한다.
SELECT * FROM dept d RIGHT OUTER JOIN emp e ON d.deptno = e.deptno;
B(오른쪽) 테이블을 기준으로 A(왼쪽) 테이블을 조인 거는 경우입니다.
이럴 경우도 left 와 마찬가지로 생각해본다면, B테이블의 전체값이 결과로 나올 것이고, A 테이블의 값은 있으면 나오고 없으면 안나온다.
출처: https://devbox.tistory.com/entry/Comporison-LEFT-JOIN-과-RIGHT-JOIN [장인개발자를 꿈꾸는 :: 기록하는 공간]
'MySql' 카테고리의 다른 글
프로시저로 반복 데이터 Insert (0) | 2021.02.12 |
---|---|
외래기 지정시 옵션 (0) | 2021.02.10 |
[SQL] GROUP, HAVING (0) | 2021.01.21 |
@Query 어노테이션에서 Native SQL 사용법 (0) | 2021.01.14 |
[Maria DB] 유용 query (0) | 2021.01.13 |