带有JOIN的MySQL DELETE使用LIMIT语句

时间:2017-08-10 15:56:41

标签: mysql sql join mariadb sql-delete

我正在运行查询以删除重复的条目。它在没有LIMIT语句的情况下工作,但会使服务器超载。我想使用LIMIT语句批处理它。

DELETE t1
FROM data as t1
join data as t2
WHERE t1.type = t2.type
AND t1.timestamp = t2.timestamp
LIMIT 100

并且LIMIT语句收到错误:

  

错误1064(42000):您的SQL语法有错误;检查与MariaDB服务器版本对应的手册,以便在第6行的“LIMIT 100”附近使用正确的语法

2 个答案:

答案 0 :(得分:2)

您无法直接使用您可以在选择

中使用的删除限制
  DELETE data 
  FROM data as t1
  join (
        select distinct type, timestamp from data limit 100  
  ) t2  on t1.type = t2.type AND t1.timestamp = t2.timestamp

答案 1 :(得分:0)

多表DELETEUPDATE不允许LIMIT子句。这是错误消息的原因。解决方法...

要执行大量DELETEs(或UPDATEs),请在块中循环遍历表。 This讨论了详细信息。为了提高效率,它使用PRIMARY KEY,以便在桌面上行走是有效的。