我有两个表,我想将它们附加到一个新表中。让我用一个例子来说明。
Table A : (A1,A2,A3,A4)
Table B : (A1,A2,B1,B2,B3)
Merged Table : (A1,A2,A3,A4,B1,B2,B3)
我不想加入表只想附加行。如果表A有一个条目(1,2,3,4),表B有一个条目(1,2,7, 8,9)。结果表将有两行
(1,2,3,4,NULL,NULL,NULL)
(1,2,NULL,NULL,7,8,9)
目前我正在以一种劳动方式做到这一点;创建一个表,该表具有来自两个表的不同列,然后从两个表中插入所需的列。这种方法很有效但很容易出错。
除了这个过程,还有什么方法可以做到这一点吗?列数也非常大。
答案 0 :(得分:1)
您需要inner join
union
:
SELECT A.A1, A.A2, A.A3,A.A4, NULL, NULL, NULL
From TableA A
JOIN TableB B ON (A.A1=B.A1 AND A.A2=B.A2)
UNION
SELECT B.A1, B.A2, NULL, NULL, B.B1, B.B2, B.B3
From TableA A
JOIN TableB B ON (A.A1=B.A1 AND A.A2=B.A2)
答案 1 :(得分:0)
有点不清楚“有不同的列”是什么意思,但这就是我想你想要的:
insert into tableC
select a1, a2, a3, a4, NULL, NULL, NULL from tableA
union all
select a1, a2, NULL, NULL, b1, b2, b3 from tableB
即。插入新表(上面称为tableC),tableA中的所有行和tableB中的所有行。