首页 > 解决方案 > Mysql:查询以更新具有唯一随机值的电子邮件

问题描述

我需要匿名化数据库中的电子邮件,所以我尝试设置一个查询,但我找不到为每个邮件生成唯一随机字符串的方法。到目前为止我所拥有的是:

update candidate set email = (select CONCAT(SUBSTRING(MD5(RAND()) FROM 1 FOR 15) , '@test.fr'));

但显然该值不是唯一的,通过简单的查询可以实现吗?

我在这里尝试了解决方案:https ://harrybailey.com/2015/08/mysql-roughly-random-string-generation-for-updating-rows/但结果相同,我得到了

错误代码:1062。密钥“电子邮件”的重复条目“0417da5fb3d071b9bd10”

标签: mysql

解决方案


您可以使用 UUID

 UPDATE `candidate` SET email = CONCAT(MD5(UUID()),'@test.fr');

如果你想要正好 15 个字符

 UPDATE candidate SET email=CONCAT(SUBSTRING(MD5(UUID()),1,15) , '@test.fr');

推荐阅读