일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 한글깨짐
- chart.js
- 일본여행
- Excel
- 중학생코딩
- Aspose.cells
- .csv
- 중1코딩
- league of legends
- Android
- largelanguagemodels
- 오블완
- upbit
- 코딩입문
- 블록코딩
- 아이코딩습관
- MYSQL
- cc챔피언
- AIoptimization
- 엔트리
- 초딩수학
- MSSQL
- httpclient timeout
- swift 화면전환
- Kakao API Address
- python
- ASP.NET MVC
- PromptEngineering
- 썸머노트
- MS-SQL
- Today
- Total
DBA
Left Join & Right Join 본문
Table : #A, #B (참고 : https://hampi2.tistory.com/88)
Inner Join
if object_id('tempdb..#A') is not null drop table #A if object_id('tempdb..#B') is not null drop table #B create table #A ( id int identity , aCol1 varchar(10) , aCol2 varchar(10) , deleteYN tinyint..
hampi2.tistory.com
---- left join : 왼쪽(Table #A)이 기준이 되어 왼쪽 테이블의 모든 행이 출력 된다. 오른쪽(Table #B)에 왼쪽(Table #A)의 키(id)를 외래키(aID)로 들고있는 행이 없으면 그 행은 null로 반환 된다. - 부분집합
select * from #A as a
left join #B as b on b.aID = a.id
---- right join : 오른쪽(Table #B)이 기준이 되어 오른쪽(Table #B)의 모든 행이 출력 된다. 오른쪽(Table #B)이 가지고 있는 외래키(aID)가 왼쪽(Table #A)에 없으면 그 행은 null로 반환 된다. - left join의 반대로 생각 하면 됨.
select * from #A as a
right join #B as b on b.aID = a.id
---- left join & where절 :
---- 첫번째 : left join (왼쪽(Table #A)이 기준이 되어 왼쪽 테이블의 모든 행이 출력 된다. 오른쪽(Table #B)에 왼쪽(Table #A)의 키(id)를 외래키(aID)로 들고있는 행이 없으면 그 행은 null로 반환 된다.)
---- 두번째 : where 절 (where a.deleteYN = 0) - 위 left join 결과에서 where절의 조건에 맞는 행만 다시 걸러서 결과로 출력 된다.
select * from #A as a
left join #B as b on b.aID = a.id
where a.deleteYN = 0
---- left join & on절에 where절 조건 추가 :
---- 첫번째 : left join (왼쪽(Table #A)이 기준이 되어 왼쪽 테이블의 모든 행이 출력 된다. 오른쪽(Table #B)에 왼쪽(Table #A)의 키(id)를 외래키(aID)로 들고있는 행이 없으면 그 행은 null로 반환 된다.)
---- 두번째 : 왼쪽(Table #A)의 deleteYN = 0 인 행과 조인된 오른쪽(Table #B) 행은 null로 반환 된다.
---- 세번째 : null 변환 되면서 중복된 행은 Merge 된다.
select * from #A as a
left join #B as b on b.aID = a.id and a.deleteYN = 0
---- left join & where b.id is null : 차집합
---- 첫번째 : 왼쪽(Table #A)이 기준이 되어 왼쪽 테이블의 모든 행이 출력 된다. 오른쪽(Table #B)에 왼쪽(Table #A)의 키(id)를 외래키(aID)로 들고있는 행이 없으면 그 행은 null로 반환 된다.
---- 두번째 : 왼쪽(Table #A)에만 존재 하는것만 결과(where b.id is null)로 출력
select * from #A as a
left join #B as b on b.aID = a.id
where b.id is null