4

我有一个表,其中包含 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- mysql 中的第一个双记录与更改忽略命令

但是当我尝试声明时 alter ignore table emails_test add unique index(email)

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

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

4

1 回答 1

12

您可以尝试通过几个单独的步骤来执行此操作:

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
于 2013-11-11T16:49:56.640 回答