복붙노트

[SQL] , 허용 널 (null)을 하나 개의 테이블에있는 모든 항목을 선택하고 다른 테이블과 조인

SQL

, 허용 널 (null)을 하나 개의 테이블에있는 모든 항목을 선택하고 다른 테이블과 조인

나는 테이블 조류 (기본적으로 모든 새)에서 모든 값을 선택하는 요구 사항을 가지고 있고, 그 새를 좋아하는 사람 추적 다른 테이블에 합류.

내가 원하는 그래서 쿼리는 모든 새를 반환하고 기록의 ID에 어디에 새 같은 사람. 이 새를 좋아하는 사람에 대한 기록이없는 경우에, 그 필드는 null한다.

나의 현재 쿼리는 널 (null)을 받고 있지 않습니다. 여기있어:

select  bird_name, member_id 
from birds  
right join bird_likes on birds.bird_id = bird_likes.bird_id 
where member_id = 2 ;

내가이 새 테이블에 있는지 각 행은 한 번 표시지고 만들기 위해 할 수 있을까?

해결법

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

    1.당신은 가입 대신 오른쪽에 가입 왼쪽 사용해야합니다

    당신은 가입 대신 오른쪽에 가입 왼쪽 사용해야합니다

    내부 조인 : 두 테이블에 데이터가있을 경우에만 행을 유지

    왼쪽 테이블의 모든 행을 유지하고 올바른에서 무엇이 가능한지 추가 : 왼쪽 가입

    오른쪽 테이블의 모든 행을 유지하고 왼쪽 하나에서 무엇이 가능한지 추가 : 바로 가입

    왼쪽 표는 항상 우리가 이미 가지고있는 테이블 오른쪽 표는 우리가 가입하고있는 것입니다.

    기록을 위해,이 또한 크로스 오른쪽 테이블의 각 행과 왼쪽 테이블의 각 행을 조인하는 조인, 그러나 이것은 매우 자주 사용되지 않습니다.

    나는이 지금 당신을 위해 명확하게 모든 희망 :)

    select  bird_name, member_id 
    from birds  
    left join bird_likes on birds.bird_id = bird_likes.bird_id 
    where member_id = 2;
    

    그렇지 않으면 당신은 다음과 같은 조건을 유지할 수 있습니다,이 열 MEMBER_ID가 새 테이블에 있다고 가정합니다주의하십시오 :

    select  bird_name, member_id 
    from birds  
    left join bird_likes on 
        birds.bird_id = bird_likes.bird_id and
        bird_likes.member_id = 2;
    
  2. ==============================

    2.이 경우 가입 왼쪽 외부를 사용하려면

    이 경우 가입 왼쪽 외부를 사용하려면

    select  bird_name, member_id 
    from birds  
    left outer join bird_likes on birds.bird_id = bird_likes.bird_id 
    where member_id = 2;
    

    이 빈 취향을 가진 사람을위한 모든 새 이름과 '널 (null)'를 반환합니다.

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

    3.

    SELECT bird_name, member_id
    FROM birds
    LEFT JOIN bird_likes ON birds.bird_id=bird_likes.bird_id AND member_id=2
    
  4. ==============================

    4.당신의 오른쪽에서 왼쪽 조인에 가입 변경, 그것은 그들이 bird_likes에 관계가 있는지 여부를 모든 새 기록에 나타납니다

    당신의 오른쪽에서 왼쪽 조인에 가입 변경, 그것은 그들이 bird_likes에 관계가 있는지 여부를 모든 새 기록에 나타납니다

  5. from https://stackoverflow.com/questions/5265350/selecting-all-items-in-one-table-and-join-with-another-table-allowing-nulls by cc-by-sa and MIT license