如何在MySql中更新电子邮件记录的域
因此,我正在运行以下查询,以更改我的开发人员数据库中所有电子邮件的域,但对于重复记录,我不断收到此错误,我相信存在@sign之前的文本相同的记录。您能告诉我如何修改我的现有查询,使我看不到这个错误吗如何在MySql中更新电子邮件记录的域,mysql,sql,Mysql,Sql,因此,我正在运行以下查询,以更改我的开发人员数据库中所有电子邮件的域,但对于重复记录,我不断收到此错误,我相信存在@sign之前的文本相同的记录。您能告诉我如何修改我的现有查询,使我看不到这个错误吗 UPDATE users SET email=REPLACE(email, SUBSTR(email,INSTR(email,'@')+1),'test.com'); Error: #1062 - Duplicate entry 'username@test.com' for key '
UPDATE users SET email=REPLACE(email, SUBSTR(email,INSTR(email,'@')+1),'test.com');
Error:
#1062 - Duplicate entry 'username@test.com' for key 'email'
谢谢将域名添加到用户名中并添加您的域名。因此,任何电子邮件都是独一无二的。 您可以像这样使用子字符串\u INDEX轻松拆分它
SELECT
CONCAT(
SUBSTRING_INDEX("myuser@somedomain.com", "@", 1),'_',
REPLACE(SUBSTRING_INDEX("myuser@somedomain.com", "@", -1),'.','_'),
'@testdomain.net') as newemail;
+--------------------------------------+
| newemail |
+--------------------------------------+
| myuser_somedomain_com@testdomain.net |
+--------------------------------------+
1 row in set (0.05 sec)
UPDATE users
SET email =
CONCAT(
SUBSTRING_INDEX(email, "@", 1),'_',
REPLACE(SUBSTRING_INDEX(email, "@", -1),'.','_'),
'@testdomain.net');
也许你应该修改你的数据库设计。您可能已将电子邮件字段定义为唯一的,甚至定义为主键。不允许在多行中包含相同的电子邮件。因此,在执行查询时,您可能正在复制同一封电子邮件。@RobertoC.Rodriguez-Hidalgo我没有创建此数据库,但查看它,电子邮件不是主键,而是索引。请检查此链接>>>。你会在那里找到原因的。你希望如何处理这些复制品?你需要解释你想要的逻辑。重复是一个问题,但我可以告诉你,我真的不在乎如何处理重复,只要我可以改变所有的电子邮件。所以谢谢你,这很有效。