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

roc*_*tas 4 mysql key unique alter-table duplicates

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

id email
1  test@test.com
2  test@test.com
3  more@most.many 
4  cook@sheep.com
Run Code Online (Sandbox Code Playgroud)

我想删除id为'2'的行.我想通过创建一个独特的索引来实现这一点,email从而迫使表格减少冗余.

我在这里引用了这种方法(http://www.it-iss.com/mysql/sql-removing-duplicate-records/)和/sf/ask/1330003531/第一对的一双层记录与- ALTER-忽略-命令在MySQL的

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

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

这里有什么我想念的吗?如果这是不可能的,那么删除比使用临时表更简单的重复项的替代方法是什么MySQL Error 1093 - 无法在FROM子句中指定更新的目标表

tad*_*man 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
Run Code Online (Sandbox Code Playgroud)