은 모두 이러한 기능에 대한 이해를 테스트하고, 면접 질문입니다.
예상되는 대답은 "일반적으로 서로 다른 작업을 수행 할 때 수행 할 수 없습니다."이며, 조합이 결과 집합의 끝에 행을 추가한다는 것을 설명함으로써이를 자세히 설명합니다. join은 추가 열을 추가합니다.
SELECT ISNULL(A.AA, '') AS AA, ISNULL(B.BB, '') AS BB FROM A
FULL OUTER JOIN B ON 1=0
또는에 :
SELECT A.AA, '' AS BB FROM A
UNION ALL
SELECT '' AS AA, B.BB FROM B
는 것과 같습니다 행이 두 소스의 하나에서 데이터를 포함하는 경우
당신이 가입 할 수있는 유일한 방법과 연합 작품입니다 하나 개의 컬럼 만이 할 유형이 일치 여기서
SELECT A.AA AS TT FROM A
UNION ALL
SELECT B.BB AS TT FROM B
가와 같습니다
당신이 데이터를 여러 테이블에 걸쳐 산란이 있지만 당신이 함께 TI 모두를보고 싶다면이 작업을 수행 할 것
SELECT ISNULL(A.AA, B.AA) AS TT
FROM A
FULL OUTER JOIN B ON 1=0
한 경우 그러나 나는이 경우보다는 FULL OUTER에 UNION을 사용하도록 권합니다의 때문에 가입한다 쿼리는 다르게 예상 할 수있는 일을합니다.
내부 조인을 시뮬레이트하기 위해 EXISTS 및 Sub를 사용할 수 있지만 UNION만으로는 그렇게 생각하지 않습니다. – Magnus