2017-01-02 55 views
2

我試圖根據幾列將UNIQUE索引添加到我的表中。但是,它正在識別重複條目並且正在出錯。我嘗試使用IGNORE關鍵字,但它已經depreciated entirely in 5.7MySQL:改變表格並刪除重複的唯一鍵

這裏是我的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的功能....這是我在這個問題上一個問題的答案...

+0

用相同的結構創建一個具有唯一索引的表,然後使用INSERT IGNORE INTO table1(field1,field2等)SELECT field1,field2等From table2'如果希望保留最多當前記錄(最新設置)添加'ON DUPLICATE KEY UPDATE'。從此學習總是使用唯一的索引列之前,你開始填充數據:) –

+0

可能重複的[如何刪除MySQL表上的重複?](http://stackoverflow.com/questions/2630440/how-to-delete -duplicates-on-a-mysql-table) – e4c5

+0

@KraangPrime工作很棒!請添加一個答案,我會接受它。 –

回答

0

解決這個問題的最簡單的解決方案是創建一個新表基於先前的結構,運行像查詢如下:

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

如果您想保留最近的記錄(存儲在table1順序),您可以添加:

ON DUPLICATE KEY UPDATE