복붙노트

[SQL] FULL의 차이는 가입 및 INNER는 가입

SQL

FULL의 차이는 가입 및 INNER는 가입

FULL은 가입 및 내부 조인의 차이점은 무엇입니까?

나는 전체가 가입 할 때, 나는 832 개 기록을 얻을 내부 조인과 함께, 나는 830 개 기록을 얻을.

해결법

  1. ==============================

    1.참고 :이 모든 위키 피 디아에서 찾을 수 있습니다 : 가입 (SQL).

    참고 :이 모든 위키 피 디아에서 찾을 수 있습니다 : 가입 (SQL).

    OUTER 조인의 세 가지 유형이 있습니다 :

    FULL 전체 외부 조인과 동일 가입 있도록 키워드 OUTER는, 표준에 따라 모든 구현의 선택 사항입니다. (나는이 답변의 나머지 부분에서 SQL에서 단어 OUTER를 생략했습니다.)

    각이 무엇에서 살펴 보자.

    다음의 두 입력 데이터 세트를 고려

     Set "A"    Set "B"
    
     AA         BB
    --------   --------
     Item 1     Item 3
     Item 2     Item 4
     Item 3     Item 5
     Item 4     Item 6
    

    공지 사항 일부 B에없는 A의 항목 및 그 반대가 있음.

    우리는이 같은 SQL 문을 작성하는 경우 이제, LEFT를 사용하여 조인

    SELECT * FROM A LEFT JOIN B ON AA = BB
    

    당신은 다음과 같은 결과를 (빈 구멍이 실제로 NULL 마크) 얻을 것이다 :

     AA         BB
    --------   --------
     Item 1
     Item 2
     Item 3     Item 3
     Item 4     Item 4
    

    당신의 왼쪽 부분에서 AA에서 모든 행, 또는 오히려, 모든 행을 얻을거야 공지 사항 절을 가입 할 수 있습니다.

    당신이 권리를 사용하도록 전환하는 경우에 가입 :

    SELECT * FROM A RIGHT JOIN B ON AA = BB
    
     AA         BB
    --------   --------
     Item 3     Item 3
     Item 4     Item 4
                Item 5
                Item 6
    

    당신이 모든 행의 오른쪽 부분에서 얻을 공지 사항 절을 가입 할 수 있습니다.

    둘 다의 모든 행을하려는 경우, 당신은 FULL 조인을 사용합니다 :

    SELECT * FROM A FULL JOIN B ON AA = BB
    
     AA         BB
    --------   --------
     Item 1            <-----+
     Item 2                  |
     Item 3     Item 3       |
     Item 4     Item 4       |
                Item 5       +--- empty holes are NULL's
                Item 6       |
       ^                     |
       |                     |
       +---------------------+
    

    코멘트에서 제안한 것처럼, 내가 가입 할 수있는 다른 여러 가지 방법을 완료 할 수 있습니다.

    INNER로 조인

    SELECT * FROM A INNER JOIN B ON AA = BB
    
     AA         BB
    --------   --------
     Item 3     Item 3
     Item 4     Item 4
    

    INNER으로 우리가 실제로 일치하는 행 때문에 가입없이 구멍을 얻을 가입 할 수 있습니다.

    크로스 가입 번째 세트로부터 모든 행과 첫 번째 세트에서 모든 행을 일치시켜, 카티 생성물을 생성한다 :

    SELECT * FROM A CROSS JOIN B
    
     AA         BB
    --------   --------
     Item 1     Item 3      ^
     Item 1     Item 4      +--- first item from A, repeated for all items of B
     Item 1     Item 5      |
     Item 1     Item 6      v
     Item 2     Item 3      ^
     Item 2     Item 4      +--- second item from A, repeated for all items of B
     Item 2     Item 5      |
     Item 2     Item 6      v
     Item 3     Item 3      ... and so on
     Item 3     Item 4
     Item 3     Item 5
     Item 3     Item 6
     Item 4     Item 3
     Item 4     Item 4
     Item 4     Item 5
     Item 4     Item 6
    

    또한 수행 일치가 없기 때문에 우리가 할 열이 일치를 지정하지 있습니다.

    마지막으로, 자연에 가입,이 구문에 우리는 지정하지 않은 열을 열 이름에 일치하지만, 일치하는지 확인합니다. 우리의 인위적인 예에서, 더 열 이름은 동일하지 않지만하자의 열 이름이 두 테이블에 XX를했다이 특정 예를 들어, 우리는 다음과 같은 결과를 얻을 것 말 :

    SELECT * FROM A NATURAL JOIN B
    
     +----------+------- matches on the names, and then the data
     |          |
     v          v
     XX         XX
    --------   --------
     Item 3     Item 3
     Item 4     Item 4
    

    당신이 볼 수 있듯이, 당신은 조인 INNER와 같은 얻을 수 있지만,이 절을 조인의 일치하는 부분을 입력 할 필요가 없습니다.

  2. ==============================

    2.완전 외부는 LEFT OUTER의 노동 조합 가입되어 가입 및 RIGHT OUTER JOIN은.

    완전 외부는 LEFT OUTER의 노동 조합 가입되어 가입 및 RIGHT OUTER JOIN은.

    (즉, 메이크업 감각을 했습니까?)

    설명 좋은 시각적 설명 조인 (왼쪽 하단 전체 외부 조인 설명)

    크레딧 C.L.로 이동 CodeProject의에 모팻의 블로그 게시물

  3. ==============================

    3.차이는 타의 추종을 불허하는 행의 행동이다.

    차이는 타의 추종을 불허하는 행의 행동이다.

    예를 들어, 표 A는 정의 된 가입하는 상 필드의 표 B에 대응되어 있지 않은 행이 있다면, 내부 전체의 행을 포함 할 것이다 합류하면서하지만 NULL로, 모두 행을 생략 할 조인 B. 테이블의 탁월한 행 표 B. viceversa에의 필드에 대한 값

  4. ==============================

    4.아주 간단한 방법으로, 주요 차이점은 다음과 같습니다

    아주 간단한 방법으로, 주요 차이점은 다음과 같습니다

    INNER는 가입 - 반환 만 일치하는 행. 따라서, 일치하지 않는 행은 포함되지 않습니다.

    FULL은 가입 - 반환 우측 표에 아닌 왼쪽에 존재하는 행, 플러스 왼쪽 테이블과하지 않을 권리에 존재하는 행을, 내부 행에 가입 넘어.

  5. ==============================

    5.전체는 다른 테이블에 일치하는 행이없는 경우에도 두 테이블에서 행을 반환합니다 가입 할 수 있습니다. A는 바로 가입처럼 가입 전체이며, 왼쪽은 동시에 가입 할 수 있습니다. 내부는 다른 테이블에서 적어도 1 파트너가 행을 반환합니다 가입 할 수 있습니다.

    전체는 다른 테이블에 일치하는 행이없는 경우에도 두 테이블에서 행을 반환합니다 가입 할 수 있습니다. A는 바로 가입처럼 가입 전체이며, 왼쪽은 동시에 가입 할 수 있습니다. 내부는 다른 테이블에서 적어도 1 파트너가 행을 반환합니다 가입 할 수 있습니다.

  6. ==============================

    6.(가) 대상 필드를 조인 내부는 null을 가져 오지 것이다 조인. 일치하는 기록이없는 경우, 원래의 테이블에되지 않습니다.

    (가) 대상 필드를 조인 내부는 null을 가져 오지 것이다 조인. 일치하는 기록이없는 경우, 원래의 테이블에되지 않습니다.

  7. ==============================

    7.테이블이 아주 잘 일치하는 것을 의미한다.

    테이블이 아주 잘 일치하는 것을 의미한다.

    위키 페이지는 여기 작동 방식의 아주 좋은 예를 보여줍니다.

  8. ==============================

    8.테이블 A와 테이블 B를 고려

    테이블 A와 테이블 B를 고려

    표 A - (키, 이름)

    1 데이터 1 2, 데이터 2 4 DATA4 5, Data5

    표 B - (키, FKey, 이름)

    1, 1, 데이터 2, 2, 데이터 3, NULL, 데이터 4,4, 데이터

    내부는 반환 가입

    완전 외부 동안 반환에 가입

  9. from https://stackoverflow.com/questions/3022713/difference-between-full-join-inner-join by cc-by-sa and MIT license