innerjoin과 leftjoin 사이의 차이에 대한 상세한 설명
앞말
innerjoin과 leftjoin 간의 차이에 대해 예전에는 자신이 이해한 줄 알았는데 오늘은 앞에서 파라미터를 찾았을 때 예상한 결과가 아니라는 것을 발견하고 innerjoin에서 문제가 발생했다는 것을 알게 되었다.
수요는 데이터베이스에서 데이터를 찾아서 앞부분에서 기둥형 도형의 형식으로 보여주고 찾아낸 데이터는 업계에 따라 그룹을 나누어 각 업계의 호수와 호수가 차지하는 비례를 나타낸다. 관련된 필드는 A표의 사용자 수, 총 사용자 수와 B표의 업계 이름이 있다.원래 데이터를 찾든 안 찾든 X축에 업계 이름을 표시해야 하는데 결과는 X축, Y축에 아무런 데이터도 표시되지 않았다.문제는 내가 연결 방식을 잘못 썼다는 것이다.
1. sql의 leftjoin,rightjoin,innerjoin 간의 차이
leftjoin (왼쪽 연결) 은 왼쪽 테이블의 모든 기록과 오른쪽 테이블의 연결 필드가 같은 기록을 포함합니다.
rightjoin (오른쪽 연결) 은 오른쪽 테이블의 모든 기록과 왼쪽 테이블의 연결 필드가 같은 기록을 반환합니다
innerjoin (등치 연결) 은 두 테이블의 연결 필드가 같은 줄만 되돌려줍니다.
예를 들면 다음과 같습니다.
--------------------------------------------
표 A는 다음과 같이 기록됩니다.
aID aNum
1 a20050111
2 a20050112
3 a20050113
4 a20050114
5 a20050115
표 B는 다음과 같이 기록됩니다.
bID bName
1 2006032401
2 2006032402
3 2006032403
4 2006032404
8 2006032408
--------------------------------------------
1.left join
sql 문장은 다음과 같습니다.
select * from A
left join B
on A.aID = B.bID
결과는 다음과 같습니다.aID aNum bID bName
1 a20050111 1 2006032401
2 a20050112 2 2006032402
3 a20050113 3 2006032403
4 a20050114 4 2006032404
5 a20050115 NULL NULL
(영향 줄 수는 5 줄)
결과 설명:
leftjoin은 A표의 기록을 바탕으로 하고 A는 왼쪽 표, B는 오른쪽 표, leftjoin은 왼쪽 표를 기준으로 한다.
다시 말하면 왼쪽 표(A)의 기록은 모두 표시되고 오른쪽 표(B)는 검색 조건에 맞는 기록만 표시됩니다(예: A.aID = B.bID).
B표 기록이 부족한 부분은 모두 NULL입니다.
--------------------------------------------
2.right join
sql 문장은 다음과 같습니다.
select * from A
right join B
on A.aID = B.bID
결과는 다음과 같습니다.aID aNum bID bName
1 a20050111 1 2006032401
2 a20050112 2 2006032402
3 a20050113 3 2006032403
4 a20050114 4 2006032404
NULL NULL 8 2006032408
(영향 줄 수는 5 줄)
결과 설명:
자세히 살펴보면 leftjoin의 결과와는 정반대인 것으로 이번에는 오른쪽 표(B)를 바탕으로 A표가 부족한 부분을 NULL로 채웠다.
--------------------------------------------
3.inner join
sql 문장은 다음과 같습니다.
select * from A
innerjoin B
on A.aID = B.bID
결과는 다음과 같습니다.aID aNum bID bName
1 a20050111 1 2006032401
2 a20050112 2 2006032402
3 a20050113 3 2006032403
4 a20050114 4 2006032404
결과 설명:
분명히 여기에는 A.aID = B.bID의 기록만 표시됩니다.이것은 innerjoin이 누구를 기반으로 하지 않고 조건에 맞는 기록만 표시한다는 것을 설명한다.
총결산
이쯤에서 innerjoin과 leftjoin 간의 차이에 대한 상세한 설명을 드리겠습니다. 더 많은 innerjoin과 leftjoin 차이에 대한 내용은 저희 이전의 글을 검색하거나 아래의 관련 글을 계속 훑어보시기 바랍니다. 앞으로 많은 응원 부탁드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
하위 쿼리가 있는 pg_hint_plan이 시리즈의 이전 게시물에서 본 것처럼 테이블 별칭으로 힌트를 정의합니다. 내부 이름이 될 수 있는 이름에 대한 실행 계획을 살펴보십시오. 이것은 demo1가 해시 조인을 위한 프로브 테이블로 먼저 전체 스캔되기 때...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.