2010-08-17 10 views
3

비슷한 열이있는 두 개의 테이블이 있습니다. 나는 두 테이블을 하나씩 차례로 선택하기를 원합니다. 그래서 table1에 'x'행이 있고 table2에 'y'행이 있으면 'x + y'행을 얻을 수 있습니다.결과에 유사한 테이블 두 개를 연결하는 방법

+3

중복되는 항목이 있으면 제거 하시겠습니까? 'UNION'은 중복을 제거하기 때문에 중요합니다. --UNION ALL은 그렇게하지 않으며 더 빠릅니다. –

답변

6

이 경우 UNION [ALL]을 사용합니다. 이 경우 테이블은 동일한 열 이름을 가질 필요는 없지만 각에서 동일한 수의 열을 선택해야합니까와 해당 열은 호환 가능한 데이터 유형이 될 필요가

SELECT col1,col2,col3 FROM table1 
UNION ALL 
SELECT col1,col2,col3 FROM table2 

UNION ALLUNION에보다 더 낫다입니다 중복 제거를위한 정렬 작업을 피할 수 있으므로 선택 사항입니다.

+0

그의 테이블은 table1과 table2라는 이름이 분명히 명확한 반면 x와 y는 행 카운트로 사용되었습니다. 나는이 대답을 용인 할 수없는 것으로 생각한다. ;;) –

+0

@nathan - 너를 기쁘게하기 위해 이것을 바로 잡을 것이다! 편집 : 완료. –

+1

나는 너무 기뻤다. +1 –

1

Union 연산자를 살펴보십시오.

2
select col1,col2,col3 from table1 
union 
select col1,col2,col3 from table2 
+0

OP는 모든 행을 원하므로'UNION ALL'이 필요합니다. 'UNION'은 중복을 제거 할 것입니다. –

+0

@raj는 충분합니다. –

4

주문 내용을 추가하기 만하면 주문 작성자를 추가 할 수 있습니다. 사용중인 SQL 버전에 따라 다릅니다.

SELECT Col1, Col2, Col3 
FROM Table1 
UNION 
SELECT Col1, Col2, Col3 
FROM Table2 
ORDER BY Col1 

ORDER 및 GROUP BY는 UNION의 마지막 테이블 다음에 있어야합니다.

관련 문제