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

Mysql 将两个相同的表(实际上是表字段)合并为一个,mysql,oracle,Mysql,Oracle,这实际上是一个问题,但它包含不同的信息,所以我决定开始一个新的主题。 总结: 我有两张桌子,一张TMP_桌子和一张BKP_桌子。两者都具有相同的字段结构和相同的字段数据类型(数据几乎相同) 假设TMP_表是这样构造的 TMP_TABLE NAME PREFIX PARAMETERS data data data data data data data data data BKP_TABLE NAM

这实际上是一个问题,但它包含不同的信息,所以我决定开始一个新的主题。 总结:

我有两张桌子,一张TMP_桌子和一张BKP_桌子。两者都具有相同的字段结构和相同的字段数据类型(数据几乎相同)

假设TMP_表是这样构造的

TMP_TABLE

NAME      PREFIX      PARAMETERS 
data      data        data
data      data        data
data      data        data
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
BKP_表是这样的

TMP_TABLE

NAME      PREFIX      PARAMETERS 
data      data        data
data      data        data
data      data        data
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_TABLE

NAME      PREFIX      PARAMETERS 
data      data        data
data      data        data
data      data        data
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_表字段(例如名称)替换TMP_数据的一个字段

将从两个选择返回所有记录(因此为所有记录)

将删除重复项

将从两个选择返回所有记录(因此为所有记录)


将删除重复项

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

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

这就是你的意思吗?

假设你的两个表有一个共同的键(例如名称),你可以这样做:

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


这就是你的意思吗?

谢谢你的回复。不幸的是,我在尝试联合之前就尝试了联合。两个都给了我相同的结果。@jovany,是的,当然:
UNION
删除重复项。如果这些行不是完全相同的,那么它们就不是重复的。啊哈,当然,在我看来,它们可能“看起来”完全相同,但就内容而言,可能略有不同。谢谢。好吧,我的主键丢了,这是我的问题。谢谢你的回复。不幸的是,我在尝试联合之前就尝试了联合。两个都给了我相同的结果。@jovany,是的,当然:
UNION
删除重复项。如果这些行不是完全相同的,那么它们就不是重复的。啊哈,当然,在我看来,它们可能“看起来”完全相同,但就内容而言,可能略有不同。谢谢。好吧,我的主键丢了,这是我的问题。谢谢,现在还不清楚你想做什么。一些(简单的)现实数据,而不仅仅是到处重复的“数据”这个词,怎么样?目前还不清楚你想做什么。不如用一些(简单的)真实的数据,而不仅仅是到处重复的“数据”这个词,好吗?我也做得太多了,不幸的是,它并不能完全满足我的需要。因为现在它将我的记录相乘,所以当我这样做时,我在新的end_Resultable中得到113*113条记录。我想要的(如果可能的话)实际上只是替换一个数据字段。我将对我的帖子进行编辑。如果你有113*113行,即笛卡尔积,这意味着你没有指定连接条件(“在我的答案中,t.name=b.name”),或者你连接的列不是键,并且在所有113行中具有相同的值!您的表实际上是否有键,或者您只是希望将表A的第1行与表B的第1行“对齐”,以此类推?如果是这样,数据库就不会这样工作了。谢谢你!。。。事实上,我没有指定我的pk,所以我得到了笛卡尔积。托皮也走了那么远,不幸的是它并没有达到我想要的。因为现在它将我的记录相乘,所以当我这样做时,我在新的end_Resultable中得到113*113条记录。我想要的(如果可能的话)实际上只是替换一个数据字段。我将对我的帖子进行编辑。如果你有113*113行,即笛卡尔积,这意味着你没有指定连接条件(“在我的答案中,t.name=b.name”),或者你连接的列不是键,并且在所有113行中具有相同的值!您的表实际上是否有键,或者您只是希望将表A的第1行与表B的第1行“对齐”,以此类推?如果是这样,数据库就不会这样工作了。谢谢你!。。。事实上,我没有指定我的pk,所以我得到了笛卡尔积。顶部