我有两组数据需要合并在一起。这很容易。问题是这些数据集具有相同的ID。我想迭代其中一个表,只需将所有ID增加10,000,这样当我合并两个表时,就没有相同的ID。
有没有办法迭代每一行并将ID增加10,000或任何数字?
答案 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