복붙노트

[SQL] 어떻게 다른 테이블에 가입하지 않는 행을 제외하려면?

SQL

어떻게 다른 테이블에 가입하지 않는 행을 제외하려면?

다른 키 외래 키로 차있다 나는 두 개의 테이블을 가지고 하나가있다.

나는 보조 테이블은 그것의 키를 포함하는 항목이없는 경우에만 기본 테이블에서 데이터를 끌어합니다. 정렬 간단한 내부의 반대의 해당 키가 함께 조인 행만 반환 조인.

해결법

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

    1.

    SELECT <select_list> 
    FROM Table_A A
    LEFT JOIN Table_B B
    ON A.Key = B.Key
    WHERE B.Key IS NULL
    

    조인의 전체 이미지

    aticle에서 : http://www.codeproject.com/KB/database/Visual_SQL_Joins.aspx

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

    2.

    SELECT
       *
    FROM
       primarytable P
    WHERE
       NOT EXISTS (SELECT * FROM secondarytable S
         WHERE
             P.PKCol = S.FKCol)
    

    일반적으로, (NOT) 다음 더 나은 선택입니다 EXISTS (NOT) IN 또는 (왼쪽) 가입

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

    3.A는 "없는 존재"를 사용 왼쪽 조인

    A는 "없는 존재"를 사용 왼쪽 조인

    SELECT p.*
    FROM primary_table p LEFT JOIN second s ON p.ID = s.ID
    WHERE s.ID IS NULL
    
  4. ==============================

    4.

    SELECT P.*
    FROM primary_table P
    LEFT JOIN secondary_table S on P.id = S.p_id
    WHERE S.p_id IS NULL
    
  5. ==============================

    5.또 다른 솔루션입니다 :

    또 다른 솔루션입니다 :

    SELECT * FROM TABLE1 WHERE id NOT IN (SELECT id FROM TABLE2)
    
  6. ==============================

    6.당신은 또한 두 번째 테이블에 존재하는 첫 번째 테이블에서 열 "을 선택하고 싶다면,이 경우에 당신은 또한 EXCEPT 사용할 수 있습니다.이 경우, 열 이름은 동일해야 잘하지만 데이터 유형과 다를 수 있습니다.

    당신은 또한 두 번째 테이블에 존재하는 첫 번째 테이블에서 열 "을 선택하고 싶다면,이 경우에 당신은 또한 EXCEPT 사용할 수 있습니다.이 경우, 열 이름은 동일해야 잘하지만 데이터 유형과 다를 수 있습니다.

    예:

    select ID, FName
    from FirstTable
    EXCEPT
    select ID, SName
    from SecondTable
    
  7. ==============================

    7.이 COGNOS의 문이 허용되었다 "아니의"SQL을 생성하기 때문에 COGNOS에 사용하는 것이 도움이되었다, 그러나 그것은 실행하는 데 시간이 너무 오래 걸립니다. 나는 수동으로 B.key "가 아닌"A.key로 COGNOS에서의 테이블 B에 가입 테이블 A를 코딩했지만, 쿼리는 5 분 후에 결과를 반환하지 않습니다 / 너무 오래 복용했다.

    이 COGNOS의 문이 허용되었다 "아니의"SQL을 생성하기 때문에 COGNOS에 사용하는 것이 도움이되었다, 그러나 그것은 실행하는 데 시간이 너무 오래 걸립니다. 나는 수동으로 B.key "가 아닌"A.key로 COGNOS에서의 테이블 B에 가입 테이블 A를 코딩했지만, 쿼리는 5 분 후에 결과를 반환하지 않습니다 / 너무 오래 복용했다.

    COGNOS의 솔루션 "가 아닌"는을 찾고 다른 사람을 위해, 여기에 내가 무슨 짓을했는지입니다. 링크 유형을 선택하여 LEFT 함께 테이블 A 및 B 조인 쿼리 COGNOS 가입 생성 : 테이블 A.Key가 테이블 B에 "0 N"값을 가지며, 다음에 대한 필터 (절 이러한 대응한다)를 첨가 : 테이블 B .KEY은 NULL입니다.

    빠르고 마법처럼 달렸다.

  8. from https://stackoverflow.com/questions/4560471/how-to-exclude-rows-that-dont-join-with-another-table by cc-by-sa and MIT license