“Alter ignore”+“unique key”删除重复项,mysql和sql server

时间:2013-11-11 16:46:13

标签: mysql duplicates key unique alter-table

我有一个包含1列重复值的表,即表emails

id email
1  test@test.com
2  test@test.com
3  more@most.many 
4  cook@sheep.com

我想删除ID为'2'的行。我想通过创建email的唯一索引来实现此目的,从而迫使表格减少冗余。

我在这里引用了这个方法(http://www.it-iss.com/mysql/sql-removing-duplicate-records/)和https://stackoverflow.com/questions/19000050/how-to-delete-first-of-a-double-record-with-alter-ignore-command-in-mysql

但是当我尝试这个陈述时 alter ignore table emails_test add unique index(email)

我收到了test@test.com的重复输入错误,好像我从未加入ignore关键字

这里有什么我想念的吗?如果这是不可能的,那么删除比使用临时表MySQL Error 1093 - Can't specify target table for update in FROM clause

更简单的重复项的替代方法是什么?

1 个答案:

答案 0 :(得分:11)

您可以尝试执行以下几个步骤:

CREATE TABLE _emails LIKE emails
ALTER TABLE _emails ADD UNIQUE INDEX(email)
INSERT IGNORE INTO _emails SELECT * FROM emails
RENAME TABLE emails TO emails_old, _emails TO emails