【发布时间】:2021-02-28 15:19:28
【问题描述】:
以下语句删除重复行并保留最高id
DELETE t1 FROM contacts t1
INNER JOIN contacts t2
WHERE
t1.id < t2.id AND
t1.email = t2.email;
此查询引用了两次联系人表,因此它使用表别名 t1 和 t2。
但是我有一个 600 万行的表,我们需要清理它。
我的第一个方法是用这行创建一个 SP
REPEAT
DELETE t1 FROM contacts t1
INNER JOIN contacts t2
WHERE
t1.id < t2.id AND
t1.email = t2.email
ORDER BY t1.id ASC LIMIT 10000;
UNTIL ROW_COUNT() = 0 END REPEAT;
错误是
1064 - 您的 SQL 语法有错误;检查手册 对应于您的 MySQL 服务器版本,以便使用正确的语法 在第 17 行的“ORDER BY t1.id ASC LIMIT 10000”附近时间:0,063s
帮我做。
【问题讨论】:
-
删除没有顺序,你不能使用限制,你想达到什么目的。运行并仅 chelc 10000 行
-
@nbk 请看dev.mysql.com/doc/refman/8.0/en/delete.html 删除顺序
-
您也应该阅读多表语法部分
标签: mysql stored-procedures sql-delete