복붙노트

[SQL] SQL : 체크 테이블 A의 항목은 테이블 B에있는 경우

SQL

SQL : 체크 테이블 A의 항목은 테이블 B에있는 경우

나는 매우 잘 유지되지 않는 알고 정의 테이블이, 테이블 A의 부분 집합이어야한다 이상적으로 훨씬 작은 것을 (이 테이블 B를 호출) 내가 다른 테이블이이 테이블 A를 호출 할 수 있습니다하지만 난 그 테이블 A를 알고 다소 오래된이며, 표 B에있는 새 항목을 포함하지 않습니다

참고, 테이블 A와 B가 서로 다른 열이 있는지 확인하십시오.

Table A:
ID, Name, blah, blah, blah, blah

Table B:
ID, Name

내가 표 B의 모든 행을 원하는 테이블 B의 ID 단지 표 A의 행과 일치하지 않는 표 A.이 존재하지 않도록; 나는 ID가 테이블 A에 전혀 존재하지 않는 테이블 B의 행만을 원하는

해결법

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

    1.

    SELECT *
    FROM   B
    WHERE  NOT EXISTS (SELECT 1 
                       FROM   A 
                       WHERE  A.ID = B.ID)
    
  2. ==============================

    2.거의 모든 환경에서 작동하는 고전적인 대답은

    거의 모든 환경에서 작동하는 고전적인 대답은

    SELECT ID, Name, blah, blah
    FROM TableB TB
    LEFT JOIN TableA TA
    ON TB.ID=TA.ID
    WHERE TA.ID IS NULL
    

    때때로 (작동하지 않는) 구현되지 수있다 존재합니다.

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

    3.당신이 사용에 설정된 경우 SQL 서버에서 아래를 사용할 수 있습니다 존재합니다

    당신이 사용에 설정된 경우 SQL 서버에서 아래를 사용할 수 있습니다 존재합니다

    SELECT * FROM TableB as b
    WHERE NOT EXISTS
    (
       SELECT * FROM TableA as a
       WHERE b.id = a.id
    )
    
  4. ==============================

    4.이것은 또한 작동

    이것은 또한 작동

    SELECT *
    FROM tableB
    WHERE ID NOT IN (
      SELECT ID FROM tableA
    );
    
  5. ==============================

    5."NOT EXISTS"경우 또는 구현되지 않습니다

    "NOT EXISTS"경우 또는 구현되지 않습니다

    SELECT *
    FROM   B
    WHERE (SELECT count(*)  FROM   A WHERE  A.ID = B.ID) < 1
    
  6. from https://stackoverflow.com/questions/15938180/sql-check-if-entry-in-table-a-exists-in-table-b by cc-by-sa and MIT license