2016-06-04 2 views
0

나는 두 개의 테이블 T1T2을 가지고 있으며 서로 다른 유형의 시스템 이벤트를 기록합니다. 따라서 두 테이블에는 매우 다른 필드가 있습니다. 일부 필드는 필드 이름이 다르지만 기본적으로 동일한 유형의 데이터를 포함합니다. 감안할 때 : - T1T2 모두 동일한 데이터 유형 (유닉스 시대 시간)와 타임 스탬프 필드가 - 가 T1F1T2라는 필드가 그들이는 동일한 데이터 유형을 표시하지만, 단지 다른라고 F2라는 필드가 있습니다.MySQL에서 여러 테이블을 하나로 집계하는 방법은 무엇입니까?

나는에 두 테이블을 집계 할 일 하도록 - T1T2 (시스템 이벤트의 두 가지 유형이) 함께 "통합"과 timestamp 으로 분류되어 있습니다 - 필드가 F_merged는이 T1.F1T2.F2를 포함라고했습니다

이상적으로, 각 테이블의 모든 필드가 유지되고 병합 후에 다른 테이블에서 가져온 필드에 대해 NULL을 갖도록 두 테이블을 완전히 병합하고 싶습니다. 희망은 그 말이 맞습니다.

+1

그래서 지금까지 어떤 시도를 했습니까? – JosephGarrone

답변

0

당신은 당신이 세 번째 테이블

사용에에 삽입하기 전에 데이터를 주문해야 타임 스탬프 값의 순서로 데이터를 삽입 할 필요에 따라 쿼리

지금
create table Merge_of_T1_And_T2 like T1; 

insert into Merge_of_T1_And_T2 
select * from (
select timestamp,F1 from T1 
union 
select timestamp,F2 from T2) as T 
order by T.timestamp; 

열 이름 아래 당신은 쿼리

alter table Merge_of_T1_And_T2 rename column "F1" TO "f_merged"; 
2

사용 UNION 아래의 이름 히트 했나를 변경하려는 경우 Merge_of_T1_And_T2에서 T1의 열 이름과 같을 것이다. 아래의 쿼리는 timestampF1/F2을 결과의 단일 열로 병합하지만 두 테이블의 다른 열은 별도로 유지합니다.

SELECT timestamp, F1 AS F_merged, col1, col2, col3, NULL AS col4, NULL AS col5 
FROM T1 
UNION ALL 
SELECT timestamp, F2 AS F_merged, NULL, NULL, NULL, col4, col5 
FROM T2 
관련 문제