0

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

4

4 回答 4

1

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

select c1, c2, c3 from t1
union all 
select null as c1, c2, c3 from t2
于 2012-07-30T12:16:39.363 回答
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 子句中添加额外的列来固定。

于 2012-07-30T13:04:49.770 回答
0

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

insert into t1 (c1, c2, c3) (select sequence_for_t1.nextval, c2, c3 from t2)
于 2012-07-30T12:07:41.090 回答
0

您可以使用

UNION

用于合并多个表的记录

于 2012-07-30T12:10:05.340 回答