MySQL DELETE with JOIN 使用 LIMIT 语句获取语法错误



我正在运行一个查询来删除重复的条目。 它在没有 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"附近使用的正确语法

您不能直接使用可以在选择中使用的删除限制

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

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

要执行大量DELETEs(或UPDATEs(,请按块循环访问表。这将讨论细节。 为了提高效率,它使用PRIMARY KEY,以便高效地浏览桌子。

最新更新