如何将mysql数据库中的重复行更改为唯一值
我有一个数据库表,有大约一百万条记录。我需要在此表中找到所有重复的名称,并使其唯一 身份证名称 1A 2A 3 B 4 C 5 C 应该改成 身份证名称 1A 2 A-1 3 B 4 C 5 C-1 有没有一种有效的方法可以通过mysql查询或过程实现这一点如何将mysql数据库中的重复行更改为唯一值,mysql,doc,Mysql,Doc,我有一个数据库表,有大约一百万条记录。我需要在此表中找到所有重复的名称,并使其唯一 身份证名称 1A 2A 3 B 4 C 5 C 应该改成 身份证名称 1A 2 A-1 3 B 4 C 5 C-1 有没有一种有效的方法可以通过mysql查询或过程实现这一点 提前谢谢 我需要做一些类似于我刚刚工作的桌子的事情。我需要一个唯一的URL字段,但以前的数据管理员没有保留这些约束。关键是创建一个临时表 我在这里用这个回答来帮助: 请注意,它的性能并不好,但如果您只需要在数据库上运行一次来清理表,那么它应
提前谢谢 我需要做一些类似于我刚刚工作的桌子的事情。我需要一个唯一的URL字段,但以前的数据管理员没有保留这些约束。关键是创建一个临时表 我在这里用这个回答来帮助: 请注意,它的性能并不好,但如果您只需要在数据库上运行一次来清理表,那么它应该不会太差
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`
);
您试图执行什么操作?将表_x更新为upd SET upd.Name=CONCATupd.Name,'-',upd.Id,其中upd.Id中的upd.Id从表_x中选择sel.Id,其中sel.Name=upd.Name和sel.Id!=upd.Id;不为我工作