【问题标题】:MySQL: Altering a table and delete duplicate unique keysMySQL:更改表并删除重复的唯一键
【发布时间】:2017-01-02 04:51:32
【问题描述】:

我正在尝试根据几列将UNIQUE 索引添加到我的表中。但是,它正在识别重复条目并出错。我尝试使用IGNORE 关键字,但它一直是depreciated entirely in 5.7

这是我的 SQL:

ALTER TABLE `CotG`.`city_data` 
ADD UNIQUE INDEX `unique_index` (`date` ASC, `player` ASC, `city_id` ASC);

如何添加唯一键并自动删除重复行?

编辑:这不是 How to delete duplicates on a MySQL table? 的重复,因为解决我的问题的答案是针对已贬值的 MySQL 功能......这是我在这个问题中的问题之一...

【问题讨论】:

  • 创建一个具有相同结构和所需唯一索引的新表,然后使用INSERT IGNORE INTO table1 (field1, field2, etc) SELECT field1, field2, etc FROM table2,如果您希望保留最新记录(最新记录)添加ON DUPLICATE KEY UPDATE。从中学习在开始填充数据之前始终使用唯一索引列:)
  • @KraangPrime 效果很好!请添加答案,我会接受。
  • @e4c5 我不会说那里有答案,同时考虑到最佳答案(解决我的问题的答案)是针对现已弃用的 MySQL 功能...
  • 65 票赞成的答案就是您需要的答案

标签: mysql duplicates


【解决方案1】:

解决这个问题最简单的方法是根据之前的结构创建一个新表,然后运行如下查询:

INSERT IGNORE INTO table1
    (field1, field2, etc)
SELECT
    field1,
    field2,
FROM
    table2

如果您希望保留最近的记录(按存储在table1 中的顺序),您可以添加:

 ON DUPLICATE KEY UPDATE

【讨论】:

    猜你喜欢
    • 2021-01-11
    • 1970-01-01
    • 2012-05-11
    • 2014-01-12
    • 2013-09-07
    • 1970-01-01
    • 1970-01-01
    • 2012-02-28
    • 2015-06-07
    相关资源
    最近更新 更多