Mysql 更新主键-如果重复,则将其删除
我正在尝试删除主键列中的空格,如下所示:Mysql 更新主键-如果重复,则将其删除,mysql,sql,database,sql-update,duplicates,Mysql,Sql,Database,Sql Update,Duplicates,我正在尝试删除主键列中的空格,如下所示: update EMAILS set email = TRIM(email); 但是,如果修剪后的电子邮件是重复的,我只想删除它。有什么方法可以做到这一点吗?在单个查询中没有一个很好的方法可以实现您的建议,因为MySQL的设计并不能真正适应这样的情况,即初始主键数据在插入之前没有被正确清理 我的建议是在更新之前执行一个单独的查询,以识别和删除这些潜在的记录。你可以这样做: DELETE FROM emails AS delete INNER JOIN e
update EMAILS set email = TRIM(email);
但是,如果修剪后的电子邮件是重复的,我只想删除它。有什么方法可以做到这一点吗?在单个查询中没有一个很好的方法可以实现您的建议,因为MySQL的设计并不能真正适应这样的情况,即初始主键数据在插入之前没有被正确清理 我的建议是在更新之前执行一个单独的查询,以识别和删除这些潜在的记录。你可以这样做:
DELETE
FROM emails AS delete
INNER JOIN emails AS original
ON TRIM(delete.email) = original.email
AND delete.email <> original.email
删除
从电子邮件中删除
内部连接电子邮件为原始邮件
修剪时(删除.email)=原始.email
并删除.email original.email
这将从表中删除所有在修剪时会导致主键冲突的行。根据表的大小,此查询可能需要一段时间才能运行,因为您将无法利用基于TRIM()
的联接条件的索引