从大表MySql 5.5.46中删除多行
下面的语句删除重复的行并保留最高的id从大表MySql 5.5.46中删除多行,mysql,stored-procedures,sql-delete,Mysql,Stored Procedures,Sql Delete,下面的语句删除重复的行并保留最高的id DELETE t1 FROM contacts t1 INNER JOIN contacts t2 WHERE t1.id < t2.id AND t1.email = t2.email; 从联系人t1中删除t1 内部连接触点t2 哪里 t1.id
DELETE t1 FROM contacts t1
INNER JOIN contacts t2
WHERE
t1.id < t2.id AND
t1.email = t2.email;
从联系人t1中删除t1
内部连接触点t2
哪里
t1.id
此查询两次引用contacts表,因此使用表别名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;
重复
从联系人t1中删除t1
内部连接触点t2
哪里
t1.id
错误是
1064-您的SQL语法有错误;检查手册
对应于您的MySQL服务器版本,以便使用正确的语法
第17行的“t1.id ASC限制10000订单”时间:0063s
请帮我做。您不能在删除中的联接的表中使用
顺序
和限制
多表语法
DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
tbl_name[.*] [, tbl_name[.*]] ...
FROM table_references
[WHERE where_condition]
DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
FROM tbl_name[.*] [, tbl_name[.*]] ...
USING table_references
[WHERE where_condition]
请参见删除没有顺序,您不能使用限制,您尝试实现的具体目标是什么。正在运行,仅限chelc 10000rows@nbk请查看此删除顺序。您还应该阅读多表语法部分