Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将mysql数据库中的重复行更改为唯一值_Mysql_Doc - Fatal编程技术网

如何将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字段,但以前的数据管理员没有保留这些约束。关键是创建一个临时表 我在这里用这个回答来帮助: 请注意,它的性能并不好,但如果您只需要在数据库上运行一次来清理表,那么它应

我有一个数据库表,有大约一百万条记录。我需要在此表中找到所有重复的名称,并使其唯一

身份证名称 1A 2A 3 B 4 C 5 C 应该改成

身份证名称 1A 2 A-1 3 B 4 C 5 C-1 有没有一种有效的方法可以通过mysql查询或过程实现这一点


提前谢谢

我需要做一些类似于我刚刚工作的桌子的事情。我需要一个唯一的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;不为我工作