使用唯一索引删除重复项
在给定的场景中,由于列上的索引配置错误,重复项被意外插入到表中A、B、C、D。尽管目的是防止重复,但创建的索引是普通索引而不是唯一索引。
查询执行
如果尝试将现有索引从普通索引更改为唯一索引或为同一列添加新的唯一索引,查询将因存在重复记录而失败。
使用 IGNORE 的替代解决方案选项(5.7.4 之前)
在 ALTER TABLE 语法中使用 IGNORE 选项可以删除重复项:
<code class="sql">ALTER IGNORE TABLE mytable ADD UNIQUE INDEX myindex (A, B, C, D);</code>
这将丢弃重复的行,但它是需要注意的是,文档没有指定将保留哪些行。
MySQL 5.7.4 及更高版本的解决方案
对于版本 5.7.4 及更高版本,忽略ALTER TABLE 不再支持。但是,可以使用以下方法:
此过程将在 INSERT 操作期间删除重复项。
以上是以下是一些标题选项,请记住问题格式和文章的重点: **选项 1(直接且简洁):** MySQL创建非唯一索引后如何删除重复项?的详细内容。更多信息请关注PHP中文网其他相关文章!