将两个mysql表合并到第三个表中

时间:2012-09-19 16:59:36

标签: mysql merge

我有两个mysql表:

表1:

    id  name  type
     1    a    123
     2    b    125

表2:

    id  text
    1   test1
    2   test2

这两个表需要合并到第三个表

表3:

    id name type text

id是自动增量ID。前两个表具有不相关的数据。我的意思是,表1中id = 1的行与表2中id = 1的行无关。所以,我基本上想写一个sql脚本,它会在表3中插入值,最后看起来像这样:

表3:

    id name  type   text
    1   a    123
    2   b    125
    3               test1
    4               test2

旧表和新表中的ID不必匹配。只需表中的数据需要在新表中。 我是mysql的新手,如果有人能帮助我,那就太棒了!

谢谢!

2 个答案:

答案 0 :(得分:4)

可以通过以下方式完成:

CREATE TABLE Table3 (
  id int auto_increment, 
  name ..., 
  type int, 
  text ...,
  PRIMARY KEY (id)
);

INSERT INTO table3 (name, type, text) 
     SELECT name, type, text FROM (
       SELECT name, type, NULL AS text FROM table1
       UNION ALL
       SELECT NULL as name, NULL as type, text FROM table2) AS t

使用自动增量功能,我们根本不需要重新计算id

这是一个 SQL Fiddle 供您玩。 )

我实际上并不明白你的方案中的空白空间是什么,并假设它是全部为NULL。如果没有,您只需将此查询中的NULL替换为您想要的任何默认值。

答案 1 :(得分:2)

由于没有任何相关内容,请从@ raina77ow的表开始,但只使用两个查询:

INSERT INTO table3 (name, type, text)
SELECT name, type, NULL
from table1;

INSERT INTO table3 (name, type, text)
SELECT NULL, NULL, text
from table2;