【问题标题】:How to preform multiple DELETE queries in an event MySQL 8如何在事件 MySQL 8 中执行多个 DELETE 查询
【发布时间】:2019-09-18 00:47:01
【问题描述】:

我试图在一段时间后使用事件删除行。这样做时,我还有其他事情要处理。我只想删除行,如果它们想在一定时间后被删除。真的不知道如何表达,但是当你看代码时你就会明白:

CREATE EVENT IF NOT EXISTS `remove_links`
ON SCHEDULE EVERY 1 SECOND
ON COMPLETION PRESERVE
ENABLE
DO 

DELETE FROM links WHERE time < (NOW() - INTERVAL 1 DAY) AND EXPIRE = 'A Day';
DELETE FROM links WHERE time < (NOW() - INTERVAL 1 WEEK) AND EXPIRE = 'A Week';
DELETE FROM links WHERE time < (NOW() - INTERVAL 1 MONTH) AND EXPIRE = 'A Month';

如果我只有一个 DELETE 语句,则此方法有效,但是当我一次添加多个时,该事件只接受第一个,甚至不会注意到其余的(我在创建它后查看了该事件并且有只有一个 DELETE 语句[总是第一个])。

很抱歉,如果以前有人回答过这个问题,我不知道要搜索什么。

【问题讨论】:

  • 你不能在 1 个查询中组合它们吗?
  • 怎么样?如果你的意思是删除';',我不能。
  • 看我的回答。

标签: mysql mysql-8.0 mysql-event


【解决方案1】:
DELETE FROM links WHERE (time < (NOW() - INTERVAL 1 DAY) AND EXPIRE = 'A Day') or 
( time < (NOW() - INTERVAL 1 WEEK) AND EXPIRE = 'A Week') or
(time < (NOW() - INTERVAL 1 MONTH) AND EXPIRE = 'A Month');

【讨论】:

  • 哇,谢谢,当我可以的时候,我把它标记为答案!我一直认为“或”只会选择第一个有效的选项。再次感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-21
  • 2019-01-26
  • 2019-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多