我在试着去掉很多行
我的查询很简单,但有一个JOIN
,LIMIT
是不允许的。我真的不明白为什么,因为它不是LEFT JOIN
。
我想将其 Package 在批处理中的事件调度程序中。我目前被LIMIT
部分卡住了。
# working
DELETE invitations from invitations JOIN events on events.id = invitations.event_id WHERE (...)
# not working
DELETE invitations from invitations JOIN events on events.id = invitations.event_id WHERE (...) LIMIT 10
我也有过类似的想法
SET GLOBAL event_scheduler = ON;
CREATE EVENT invitation_cleaner_event
ON SCHEDULE EVERY 1 DAY
STARTS '2023-05-26 04:00:00'
DO
BEGIN
REPEAT
DO SLEEP(1);
# my query to delete with join and limit
UNTIL ROW_COUNT() = 0 END REPEAT;
END
1条答案
按热度按时间zengzsys1#
在MySQL中,
LIMIT
子句不允许出现在包含JOIN
的DELETE
语句中。存在此限制是因为LIMIT
子句应用于整个结果集,而不是JOIN
中涉及的单个表。因此,它可能会导致不明确或意外的行为。与直接在
DELETE
语句中使用LIMIT
不同,您可以使用带有LIMIT
子句的子查询来检索要删除的特定行,然后在JOIN
条件中使用该结果:所以你的事件调度器看起来像这样: