복붙노트

[SQL] 나는 완전 외부 쓰기 어떻게 액세스 쿼리에 가입

SQL

나는 완전 외부 쓰기 어떻게 액세스 쿼리에 가입

원래 쿼리 :

SELECT * 
FROM AA
FULL OUTERJOIN BB on (AA.C_ID = BB.C_ID);  

어떻게 Access에서 호환되도록하는 위의 쿼리를 변환합니까?

나는 가정입니다 :

SELECT *
FROM AA
FULL LEFT JOIN BB ON (AA.C_ID = BB.C_ID);

나는 내가 제대로 액세스와 호환 쿼리에 첫 번째 쿼리를 변환 오전하기 전에 "FULL"기준 처리하지?

해결법

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

    1.AA 및 BB (즉, 모두 동일한 값)에 중복 된 행이없는 가정이 완전 외부 조인 및 바로 가입 좌측의 결합에 상응한다.

    AA 및 BB (즉, 모두 동일한 값)에 중복 된 행이없는 가정이 완전 외부 조인 및 바로 가입 좌측의 결합에 상응한다.

    SELECT *
        FROM AA
            LEFT JOIN BB ON AA.C_ID = BB.C_ID
    UNION
    SELECT *
        FROM AA
            RIGHT JOIN BB ON AA.C_ID = BB.C_ID
    

    거기에 중복 행이 (당신이 그들을 유지하려는) 경우 AA.C_ID가 마지막에 NULL 또는 AA에서 기록을 해당하지있을 경우에만 null의 다른 분야이고, 추가 할 수 있습니다.

    편집하다:

    여기에 유사한 접근 방법을 참조하십시오.

    그것은 더 자세한 권장하지만, 더 성능이 좋은

    SELECT *
        FROM AA
            JOIN BB ON AA.C_ID = BB.C_ID
    UNION ALL
    SELECT *
        FROM AA
            LEFT JOIN BB ON AA.C_ID = BB.C_ID
        WHERE BB.C_ID IS NULL
    UNION ALL
    SELECT *
        FROM AA
            RIGHT JOIN BB ON AA.C_ID = BB.C_ID
        WHERE AA.C_ID IS NULL
    

    그러나,이 AA.C_ID 및 BB.C_ID가 null이 아닌 것으로 가정합니다.

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

    2.더 효율적이고 빠른 코드 :

    더 효율적이고 빠른 코드 :

    SELECT *
        FROM AA
            LEFT JOIN BB ON AA.C_ID = BB.C_ID
    UNION ALL
    SELECT *
        FROM AA
            RIGHT JOIN BB ON AA.C_ID = BB.C_ID
        WHERE AA.C_ID IS NULL
    
  3. ==============================

    3.나는 필드 이름이 두 테이블에 같은 경우 그들이 * 연산자를 사용하는 대신, 나열 할 필요가 있음을 발견했다. 또한, 두 번째 SELECT 문은 다른 테이블을 참조 할 필요가있다. 단순히 BB 테이블에있는 행의 포함을 허용하지 않습니다 JOIN 처음과 같은 SQL을 사용하고 RIGHT로 변경.

    나는 필드 이름이 두 테이블에 같은 경우 그들이 * 연산자를 사용하는 대신, 나열 할 필요가 있음을 발견했다. 또한, 두 번째 SELECT 문은 다른 테이블을 참조 할 필요가있다. 단순히 BB 테이블에있는 행의 포함을 허용하지 않습니다 JOIN 처음과 같은 SQL을 사용하고 RIGHT로 변경.

    SELECT AA.C_ID
    FROM AA
    LEFT JOIN BB ON 
      AA.C_ID = BB.C_ID
    UNION ALL 
    SELECT BB.C_ID
    FROM BB
    LEFT JOIN AA ON 
      AA.C_ID = BB.C_ID
    WHERE AA.C_ID IS NULL;
    
  4. from https://stackoverflow.com/questions/19615177/how-do-i-write-a-full-outer-join-query-in-access by cc-by-sa and MIT license