在SQL中附加两个表

时间:2015-03-27 09:52:47

标签: sql postgresql

我有两个表,我想将它们附加到一个新表中。让我用一个例子来说明。

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)

目前我正在以一种劳动方式做到这一点;创建一个表,该表具有来自两个表的不同列,然后从两个表中插入所需的列。这种方法很有效但很容易出错。

除了这个过程,还有什么方法可以做到这一点吗?列数也非常大。

2 个答案:

答案 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中的所有行。