我有一个包含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
更简单的重复项的替代方法是什么?答案 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