合并或连接两个表与记录

时间:2012-07-30 11:59:53

标签: sql oracle

问题是,我们有两个表t1和t2。 t1有3列,t2有2列。假设t1有5条记录,t2有3条记录。我想合并或加入两个表,以便t2的记录在最后一个记录之后出现在表t1中。我们可以创建类似于T1(c1,c2,c3)和T2(c2,c3)的列,其中c2和c3在两个表中都是相同的数据类型,而c1则作为主键或唯一键。

4 个答案:

答案 0 :(得分:1)

您可以使用UNIQUE ALL语句(没有“all”的普通联合只返回不同的值)。

select c1, c2, c3 from t1
union all 
select null as c1, c2, c3 from t2

答案 1 :(得分:1)

这将返回两个表中的所有行,其中T1的行出现在T2的行之前。

select c1, c2, c3 from t1 
union all  
select null as c1, c2, c3 from t2 
order by nvl2(c1, 0, 1) asc 

当C1的值不为空时,NVL2()命令将返回0;对于T1中的所有行(它是主键)都是如此,对于T2中的所有行都是如此。表的顺序是任意的,但可以通过向ORDER BY子句添加其他列来修复。

答案 2 :(得分:0)

如果正确理解您的帖子,您希望将表t2中可以找到的记录附加到表t1

insert into t1 (c1, c2, c3) (select sequence_for_t1.nextval, c2, c3 from t2)

答案 3 :(得分:0)

你可以使用

UNION

用于合并多个表的记录