innerjoin과 leftjoin 사이의 차이에 대한 상세한 설명

2812 단어 innerjoinleft

앞말


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 차이에 대한 내용은 저희 이전의 글을 검색하거나 아래의 관련 글을 계속 훑어보시기 바랍니다. 앞으로 많은 응원 부탁드립니다!

좋은 웹페이지 즐겨찾기