2009-09-19 6 views
2

나는 다음과 같은 두 개의 테이블이 있습니다두 개의 다른 테이블에서 하나의 테이블로 데이터를 가져 오는 중입니까?

uid | ABC | ... (bunch of other stuff) ... 
1  | val 1 | ... (bunch of other stuff) ... 
2  | val 2 | ... (bunch of other stuff) ... 
3  | val 3 | ... (bunch of other stuff) ... 

및 ...

uid | DEF | ... (bunch of other stuff) ... 
4  | val 4 | ... (bunch of other stuff) ... 
5  | val 5 | ... (bunch of other stuff) ... 
6  | val 6 | ... (bunch of other stuff) ... 

내가이 그렇게 간단한 보이는

uid | text | ... (bunch of other stuff) ... 
1  | val 1 | ... (bunch of other stuff) ... 
2  | val 2 | ... (bunch of other stuff) ... 
3  | val 3 | ... (bunch of other stuff) ... 
4  | val 4 | ... (bunch of other stuff) ... 
5  | val 5 | ... (bunch of other stuff) ... 
6  | val 6 | ... (bunch of other stuff) ... 

... 끝낼 싶지만 어떻게하는지 알아낼 수 없습니다. 가입하지 않습니까? 그렇지?

+0

RD :이 데이터를 나중에 사용할 실제 테이블을 만들 때 사용 하시겠습니까? 아니면 하나의 결과로 데이터를 수집 하시겠습니까? –

+0

단일 결과. 연합은 내가 찾고 있던 것이 었습니다! 고맙습니다! – coderama

답변

5

UNION 절을 참조하십시오. 둘 이상의 결과 세트를 하나로 결합합니다.

시도 :

SELECT uid, ABC, OtherStuff 
FROM Table1 

UNION 

SELECT uid, DEF, OtherStuff 
FROM Table2 

UNION 

SELECT uid, GHI, OtherStuff 
FROM Table3 

ORDER BY uid 

UNION ALL 운영자와이 주제에 변화가있다. UNION은 중복 행을 명시 적으로 제거하고 UNION ALL은 중복 행을 제거합니다.

이것은 행의 단순한 차이를 넘어서는 파급 효과가 있습니다. 중복을 제거하려면 UNION 연산자가 최종 결과 집합을 정렬해야합니다. 운영자가 경험하지 못한 오버 헤드입니다. 또한 명시적인 정렬 작업 일 수 있으며 UNION에 의해 수집 된 결과 집합은 UNION ALL과 비교할 때 정렬 순서가 다릅니다. 결과 집합이 수집 된 후에 명시적인 ORDER BY 문을 사용하여 정렬 순서가 맞는지 확인하는 것이 좋습니다.

열의 수는 UNION에 해당하는 결과 집합과 일치해야합니다. 2 개의 테이블이 저장하는 컬럼 수의 차이점은 OP에서 분명하지 않기 때문에 두 개의 SELECT * 문 사이에 UNION을 쓰는 것을 주저합니다.

+0

실제 테이블을이 테이블에서 만들려면 정확한 구문은 사용중인 데이터베이스에 따라 다릅니다. 대부분의 경우, "create uid, ABC ...로 테이블 foo를 만듭니다." – KingPong

+0

@ KingPong : 나는 OP를 가져 와서 그/그녀가 하나의 결과 세트를 원했을뿐 실제 테이블은 아님을 의미합니다. 나는 당신이 옳을 수도 있기 때문에 OP에 코멘트를 올렸습니다. –

1

선택 * 에서 표 3에 TMP

+0

다른 것들이 같은 스키마를 가지고 있기를 바랍니다. – Zed

1

이 뜻 조합 모두 결과 집합으로 (표 1의 조합으로부터 선택 * * 표 2에서 선택). 공용체를 수행하려면 열이 호환 가능 유형이어야합니다.

(SELECT * FROM table1) UNION (SELECT * FROM table2) 
0

union 명령은 중복 행을 제거합니다. 원하는 동작이 아니라면 모두 대신 union을 사용하고 싶습니다.

관련 문제