我有一个包含大约 1M 条记录的数据库表。我需要在此表中找到所有重复的名称并使它们唯一。
标识名称
1 A 2 A 3 B 4 C 5 C 应该改为...
标识名称
1 A 2 A-1 3 B 4 C 5 C-1 是否有使用 mysql 查询或过程执行此操作的有效方法?
提前致谢!
我需要做一些类似于我正在处理的桌子的事情。我需要一个唯一的 URL 字段,但以前的数据保存者没有保留这些约束。关键是创建一个临时表。
我在这里使用此响应来提供帮助:MySQL 错误 1093 - 无法在 FROM 子句中指定要更新的目标表
请注意,它的性能并不好,但是如果您只需要在数据库上运行一次来清理表,那么它应该不会那么糟糕。
UPDATE `new_article` `upd`
SET `upd`.`url` = CONCAT(`upd`.`url`, '-', `upd`.`id`)
WHERE `upd`.`url` IN(
SELECT `url` FROM (
SELECT `sel`.`url` FROM `new_article` `sel`
GROUP BY `sel`.`url` HAVING count(`sel`.`id`) > 1
) as `temp_table`
);