MySQL - 删除违反唯一性约束的数据

时间:2010-07-22 22:56:04

标签: mysql

如何删除违反唯一性约束的数据?

我有一个表,我想为其添加唯一性约束。表内是违反该约束的数据,我想将其删除。在这一点上,我不在乎我丢失了哪些数据,只是说最终数据是好的。

我的第一次尝试是使用'create table like'来复制表,使用alter table添加唯一键,并将旧表中的数据复制到新表中。

不幸的是,最后一步复制了所有数据,并没有抱怨唯一性。

1 个答案:

答案 0 :(得分:3)

这将添加唯一索引并删除重复项:

ALTER IGNORE TABLE your_table ADD UNIQUE INDEX your_table_index (...);

来自the docs

  

IGNORE是MySQL的扩展   标准SQL。它控制ALTER的方式   如果有重复项,TABLE可以工作   新表中的唯一键或if   严格模式时会发出警告   启用。如果未指定IGNORE,   如果,副本被中止并回滚   发生重复键错误。 如果是IGNORE   指定,只有第一行   在a上使用带有重复项的行   唯一键,其他冲突行   被删除。值不正确   截断到最接近的匹配   可接受的价值。