如果在替换语句后重复,则删除行

时间:2014-10-09 09:22:42

标签: mysql duplicate-removal

我需要能够删除电子邮件中的空格,我已经完成了TRIM所以我只需要删除实际字符串中的空格。 我找到了这个代码来做这个

SELECT email,TRIM(REPLACE(REPLACE(REPLACE(email,'\t',''),'\n',''),'\r',''))

问题是电子邮件是主键,当我运行此查询时,它会出错。 错误代码:1062 所以我需要能够删除我更新的行,如果它是重复的条目。

我会继续研究以获得答案,但我们将非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

检查以下想法是否有帮助。

  1. 使用与原始
  2. 相同的结构创建一个新的空表
      

    像YOUR_ORIGINAL_TABLE一样创建表TEMP_TABLE

    1. 使用insert ignore将来自YOUR_ORIGINAL_TABLE的所有记录与新电子邮件一起插入TEMP_TABLE,以便忽略重复的电子邮件。
    2.   

      将IGNORE INSERT到TEMP_TABLE SELECT ID,FIELD_1,FIELD_2,TRIM(REPLACE(REPLACE(REPLACE(电子邮件,' \ t',''),' \ n&n& #39;,''),' \ r','')),FIELD_N FROM YOUR_ORIGINAL_TABLE

      1. 备份YOUR_ORIGINAL_TABLE,然后将TEMP_TABLE重命名为YOUR_ORIGINAL_TABLE