我正在合并两个可能具有相同主键(id)的表,这将产生重复的条目错误。 我可以为插入的数据甚至是现有数据生成新的主键,所以如果示例数据库是:
table_a
Id | Name
----------
1 | Jack
----------
2 | Jill
----------
3 | John
----------
table_b
Id | Name
----------
1 | Jim
----------
2 | Jenny
----------
3 | Joy
----------
导入脚本为INSERT INTO table_a SELECT * FROM table_b;
如果脚本被检测为重复时,如何让脚本分配新ID?
我意识到我可以用与Merge and update primary key中描述的方式类似的方式来INSERT INTO table_a (name) SELECT name FROM table_b
,但我有近100个不同结构的表,我需要合并并希望能够使用SELECT *
并指定新的ID。
答案 0 :(得分:0)
您需要添加另一列,指定结果表的类型。
例如,在table_a
(结果表)中,您应该添加一个名为type
INT
类型的列(此处为BIT
类型),然后您需要指定示例0
表示table_a
和1
的数据表示table_b
的数据。
因此,在结果表(table_a
)中,您有以下字段:
在插入记录之前,首先按类型0
更新表'table_a' UPDATE table_b SET type = 0
然后按照table_b
table_a
与INSERT
合并
INSERT table_a([Type], TableRelatedId, Name) SELECT 1, Id, Name FROM table_b