将两个相同的表(实际上是表字段)合并为一个

时间:2010-10-12 11:32:42

标签: mysql oracle

这实际上是a followup from a previous question但它包含不同的信息,因此我决定开始一个新主题。 摘要:

我有2个表,一个是TMP_TABLE,另一个是BKP_TABLE。两者都具有相同的字段结构和相同的字段数据类型(具有几乎相同的数据)。

让我们说TMP_TABLE是这样构建的

TMP_TABLE

NAME      PREFIX      PARAMETERS 
data      data        data
data      data        data
data      data        data

和BKP_TABLE看起来像这样

BKP_TABLE

NAME      PREFIX      PARAMETERS 
data1      data1        data1
data1      data1        data1
data1      data1        data1

是否可以将这两个表组合成一个看起来像这样的表

END_RESULTTABLE 


    NAME      PREFIX      PARAMETERS 
    data      data1        data1
    data      data1        data1
    data      data1        data1

如您所见,我希望删除其中一个字段并将其替换为另一个字段。 序列几乎相同,所以我不必担心记录不正确。

附带问题

目前,TMP和BKP都包含完全相同的数据(113条记录) 当我这样做时

SELECT * FROM TMP_TABLE 
UNION ALL 
SELECT * FROM BKP_TABLE 

我得到226.为什么会这样。我认为重复的条目(我可以清楚地看到)不会出现在我的虚拟表中。

修改

我想用BKP_table字段替换TMP_data的一个字段(例如名称)。

2 个答案:

答案 0 :(得分:3)

UNION ALL  

将从两个选项中返回所有记录(因此 ALL

UNION

将删除重复项

答案 1 :(得分:0)

假设您的两个表有一个共同的密钥(例如名称),您可以执行以下操作:

create table end_resulttable as
select t.name, t.prefix, b.parameters
from   tmp_table t, bkp_table b
where  t.name = b.name;

这是你的意思吗?