2011-08-04 7 views
0

을 가진 테이블을 조인 왼쪽 -내가 두 개의 테이블이없는 중복

T1 :

col_1  col_2  col_3 
10001  apple  3 
10001  orange  2 
10001  grapes  5 

T2 :

col_1  col_2  col_3  col_4 
10001  apple  3   123 
10001  orange  2   345 

이 두 테이블을 조인하는 것이 무엇 SQL 쿼리; 저에게이 같은 결과 제공 :

col_1  col_2  col_3  col_4 
10001  apple  3   123 
10001  orange  2   345 
10001  grapes  5  
+2

이해가 안 돼요. 원하는 결과가 첫 번째 표와 동일한 사본으로 나타납니다. 두 번째 테이블은 첫 번째 테이블의 간단한 하위 집합 인 것으로 보입니다. 무엇을 성취하려고합니까? – Wiseguy

+0

각 테이블의 열이 같지 않은 경우 어때? 나는 이미 내 질문을 편집했다. 덕분에 –

+0

오, 이제 알겠습니다. 질문을 업데이트 해 주셔서 감사합니다. 두 번째 테이블에 첫 번째 테이블에없는 레코드가있을 수 있습니까? 아니면 모든 레코드가 항상 첫 번째 테이블에 있고, 그 중 일부 레코드 만 두 번째 테이블에있는 것입니까? – Wiseguy

답변

1

테이블에 참여하기를, 다음

SELECT COALESCE(t1.col_1,t2.col_1) col_1, 
    COALESCE(t1.col_2,t2.col_2) col_2, 
    COALESCE(t1.col_3,t2.col_3) col_3, 
    COALESCE(t2.col_4,'') col_4, 
FROM t1 
FULL JOIN t2 ON t1 ON t1.col_1 = t2.col1 AND t1.col_2 = t2.col_2 AND t1.col_3 = t2.col_3 
+0

각 테이블의 열이 같지 않은 경우 어때? 나는 이미 내 질문에, 감사를 편집했습니다 –

+0

내 코드가 – niktrs

0
(SELECT col_1, col_2, col_3 
FROM t1) 

UNION DISTINCT 

(SELECT col_1, col_2, col_3 
FROM t2) 
+0

일반 UNION 고유 한 행을 반환 할 확인, UNION DISTINCT SQL 서버에 대한 구문이 올바르지 않습니다 – niktrs

+0

각 테이블의 열이 같지 않은 경우 어때? 나는 이미 내 질문을 편집했습니다 덕분에 –

+0

첫 번째 SELECT는 모든 열에 대한 별칭을 설정합니다. 즉, 두 번째 테이블에서 col_4, col_5 및 col_6을 가질 수 있지만이 세 열은 col_1, col_2 및 col_3으로 계속 액세스 할 수 있습니다. 각 UNION SELECT에 동일한 양의 열을 지정하는 것을 잊지 마십시오. –

0
SELECT t1.col_1, t1.col_2, t1.col3, t2.col_4 
FROM t1 
LEFT OUTER JOIN t2 ON t1.col_1 = t2.col_1 AND t1.col_2 = t2.col_2 AND t1.col_3 = t2.col_3 
+0

감사합니다 @niktrs 조금 엉성함 – idstam

+0

col_1에 가입하면 쿼리가 3 대신 3x2 = 6 행을 반환합니다. – niktrs

0
SELECT t1.*, 
     col_4 
FROM t1 
     LEFT JOIN t2 using(col_2); 

컬럼 col_1하는 경우와 식별 col_2에는 최초의 null 이외의 데이터 열을 얻기 위해 COALESCE를 사용 고유 항목은 마지막 행을 다음으로 변경합니다.

LEFT JOIN t2 using(col_1,col_2); 
컬럼 col_1, col_2에는이 고유 항목이 마지막 줄에 변경 확인 col_3이 경우

:

LEFT JOIN t2 using(col_1,col_2,col_3); 
관련 문제