合并和更新主键

4

我搜索了一下,但没有找到解决这个看似简单问题的方法。

我有很多具有相同结构的表格,想要将它们合并。唯一的问题是它们都有一个id字段作为主键,在主键中会有很多重复。最终id是什么并不重要。如何合并所有表格,以便不会丢失任何数据?

2个回答

4
在新表中创建一个AUTO_INCREMENT字段,并从值列表中省略它:
CREATE TABLE NEW_TABLE (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, col1 …, col2 …, …);

INSERT
INTO    new_table (col1, col2, …)
SELECT  col1, col2
FROM    old_table_1
UNION ALL
SELECT  col1, col2
FROM    old_table_2
UNION ALL

是的,非常简单的代码 - 谢谢。不过我有一个稍微不同的要求。我需要为每个旧表的行集添加一个标识符。因此,新表具有一个新列,其中包含旧表的名称。这可以在一次操作中完成吗? - Rafael

1
在目标表中使用自动递增字段作为主键。然后将其他表中的所有列复制到新表中,除了主键
INSERT new_table (col1, col2 , col3)
SELECT col1, col2, col3
FROM old_table

谢谢,它完美地运行了。我想这只是一些简单的东西。 - Nathan
有没有一种方法可以同时处理多个表格? - Nathan
@BrNathan:是的,你可以使用UNION ALL,就像Quassnoi已经发布的那样。 - Mark Byers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接