使用文本列删除MYSQL中的重复对象

问题描述:

我们有一个需要多列唯一键的数据库表。但是,其中的一列是TEXT,长度只有1000个字符(因此varchar也不起作用)。由于TEXT列,我实际上不能拥有这些列的唯一键。什么是删除重复的好方法?当然,快速会很好。使用文本列删除MYSQL中的重复对象

+0

这里有很多很多的问题。 – Kermit

+0

我真的只想找到一种有效的方法来做到这一点。如果你想回答几个问题来解释你的答案,我会很好。 – eisaacson

最好的方法是使用UNIQUE INDEX来避免重复。

在需要作为唯一身份的列上创建新的唯一密钥时,会自动清除所有重复项的表。

ALTER IGNORE TABLE `table_name` 
    ADD UNIQUE KEY `key_name`(`column_1`,`column_2`); 

IGNORE部分不允许脚本在第一个错误发生后终止。默认行为是删除重复项。

+0

由于TEXT列,我实际上不能拥有这些列的唯一键。 – eisaacson

添加unique约束如下:

ALTER IGNORE TABLE table1 
ADD UNIQUE unique_name(column1, comlumn1, column3 ... Text); 

这里IGNORE将在创建约束删除重复项帮助。

+0

我知道我不复制/粘贴!但是你更快=> +1 – sdespont

+0

由于TEXT列,我实际上不能有这些列的唯一键。 – eisaacson

+0

@gearhead_webdev:我认为用'distinct'重新创建表是下一个选项,即重命名当前表,将新创建为与旧的重命名表不同的选择。这对你有用吗? –