【问题标题】:merge two mysql tables into a third table将两个mysql表合并为第三个表
【发布时间】:2012-09-12 00:59:42
【问题描述】:

我有两个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 很陌生,如果有人可以帮助我,那就太好了!

谢谢!

【问题讨论】:

    标签: mysql merge


    【解决方案1】:

    可以通过以下方式完成:

    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 替换为您想要的任何默认值。

    【讨论】:

    • 非常感谢!有效!!你真棒! :)(是的……空值没问题)
    • 您是否知道是否有办法记录合并到外部日志文件的行数?
    【解决方案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;
    

    【讨论】:

    • 你太棒了!谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-16
    • 2011-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多