0

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

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

4

2 回答 2

2
UPDATE YourTable
SET ID = ID + 10000

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

INSERT INTO Table1 (ID, other columns...)
SELECT ID+10000, other columns...
FROM Table2
于 2013-10-18T02:07:37.947 回答
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
于 2018-07-12T15:55:11.303 回答