首页 > 解决方案 > 合并 3 个重复某些 ID 的表 - mySQL

问题描述

我将 3 个具有相同结构的表合并到一个表中,但是有一些重复的行 ID(一个表中的 id 40 和另一个表中的 id 40),所以当我尝试合并表时,它只得到一个这 2 行,而另一行被忽略。有没有办法获得两行(也许给另一行随机ID?)

replace into table1 
select * 
from table2 
union 
select * 
from table3 
union 
select * 
from table4

标签: mysqlsql

解决方案


这是一个解决方案,但请注意,如果您将表链接到这些表,则外键在这种情况下将没有意义,您必须在其他表中生成它们。

您可以尝试不带主键字段的插入

INSERT INTO Table_1(column1,Column2,column3...)
SELECT column1,Column2,column3... FROM Table_2
UNION
SELECT column1,Column2,column3... FROM Table_3
UNION
SELECT column1,Column2,column3... FROM Table_4

如果 Identity 开启,主键会自动生成 你可以尝试轻松提取列:

SELECT DISTINCT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='Table_1';

我假设表具有相同的结构,所以你只做一次,我在 MSSQL 中使用了另一个技巧。

  • 右键单击表格并选择“选择前 1000 行”

它将在查询编辑器中显示结果以及包含所有表列的脚本,祝你好运!

如果要更改 auto_increment 的起始编号,可以使用以下查询:

ALTER TABLE Table_2 AUTO_INCREMENT=2000

推荐阅读