【问题标题】:MySQL v5.7.4 - Is there no longer a way to remove duplicates with "unique index"?MySQL v5.7.4 - 是否不再有办法使用“唯一索引”删除重复项?
【发布时间】:2016-10-01 13:36:37
【问题描述】:

显然,在 mySQL v5.7.4 之后,关键字 IGNORE 不再受支持,这使这个有用的重复删除查询成为现实:

alter IGNORE table labs 
add unique index noDUPES (ruid, test_sname, test_value, units, ref_range, entry_date);

我看过的所有地方都注意到 IGNORE 已停止支持,但不建议替换。

在 mySQL v5.7.4 之后,是否还有一种简单的方法可以在不使用 IGNORE 的情况下利用 UNIQUE INDEX 的强大功能来删除重复项?

【问题讨论】:

    标签: mysql database duplicates


    【解决方案1】:

    许多人认为创建索引不会从基础表中删除记录是一件好事。一种方法是使用临时表,截断并插入:

    create temporary table tokeep as
         select distinct ruid, test_sname, test_value, units, ref_range, entry_date
         from labs;
    
    truncate table labs;
    
    insert into labs(ruid, test_sname, test_value, units, ref_range, entry_date)
        select ruid, test_sname, test_value, units, ref_range, entry_date
        from tokeep;
    

    注意:此版本假定这些是表中唯一的列。如果还有其他列,类似的逻辑也可以。

    【讨论】:

    • 感谢您的选择。您是说当您将UNIQUE INDEX 添加到表格时,不再有任何方法可以强制执行它?
    • @Dylan 。 . .我认为“功能”已被删除。这是非常危险的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-12
    • 2019-01-13
    • 1970-01-01
    相关资源
    最近更新 更多