如何删除违反唯一性约束的数据?
我有一个表,我想为其添加唯一性约束。表内是违反该约束的数据,我想将其删除。在这一点上,我不在乎我丢失了哪些数据,只是说最终数据是好的。
我的第一次尝试是使用'create table like'来复制表,使用alter table添加唯一键,并将旧表中的数据复制到新表中。
不幸的是,最后一步复制了所有数据,并没有抱怨唯一性。
答案 0 :(得分:3)
这将添加唯一索引并删除重复项:
ALTER IGNORE TABLE your_table ADD UNIQUE INDEX your_table_index (...);
来自the docs:
IGNORE是MySQL的扩展 标准SQL。它控制ALTER的方式 如果有重复项,TABLE可以工作 新表中的唯一键或if 严格模式时会发出警告 启用。如果未指定IGNORE, 如果,副本被中止并回滚 发生重复键错误。 如果是IGNORE 指定,只有第一行 在a上使用带有重复项的行 唯一键,其他冲突行 被删除。值不正确 截断到最接近的匹配 可接受的价值。