mysql批量更改ID以避免重复

时间:2013-10-18 01:58:14

标签: mysql

我有两组数据需要合并在一起。这很容易。问题是这些数据集具有相同的ID。我想迭代其中一个表,只需将所有ID增加10,000,这样当我合并两个表时,就没有相同的ID。

有没有办法迭代每一行并将ID增加10,000或任何数字?

2 个答案:

答案 0 :(得分:2)

UPDATE YourTable
SET ID = ID + 10000

您也可以在合并表格的过程中执行此操作:

INSERT INTO Table1 (ID, other columns...)
SELECT ID+10000, other columns...
FROM Table2

答案 1 :(得分:0)

尽管一些数据库专家将更改ID作为绝对禁忌,但实际上并不难-但有一些警告。

首先,如果您具有与ID相关的外键,请将其设置为自动更新:

ALTER TABLE `referring_table` DROP FOREIGN KEY `fk1`;
ALTER TABLE `referring_table` ADD CONSTRAINT `fk1` FOREIGN KEY (`main_id`) REFERENCES `main` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;

main.id中的任何更改都将传递给referring_table.main_id

然后,更改ID值:

UPDATE `main` SET `id` = `id` + 1000;

最后,更改ID可能会使AUTO_INCREMENT感到困惑(至少在InnoDB中,不确定MyISAM)。您可能需要重置AUTO_INCREMENT以避免在插入新数据时出现讨厌的ID冲突:

SELECT `id` FROM `main` ORDER BY `id` DESC LIMIT 1;
ALTER TABLE `main` AUTO_INCREMENT = 1100; -- the value returned from last select + 1