根据另一个表的时间戳删除表数据库中的Row

时间:2016-06-05 17:05:34

标签: mysql database

我目前正在尝试学习如何使用MySQL数据库的程序。我在测试数据库上有两个表,一个叫做用户,另一个叫做消息。

如果删除列等于1,我尝试删除消息表中的行,使用:

DELETE FROM `messages` WHERE `delete` = 1;

效果很好。

然后,在我的表用户中,有一个名为last_seen的时间戳列(例如,2016-05-08 13:00:26)和另一个名为user_id的列,每个用户都有自己的唯一ID(例如,123456789) 。在我的表消息中,有一个名为receiver_id的列。我想创建一个过程,删除表消息中的每一行,其中来自user_id(在user表中)和receiver_id(在消息表中)的ID匹配,如果时间戳日期(来自表用户和列last_seen)超过30天。

我尝试了几种不同的东西,但似乎都没有效果。不知道怎么做?

这是我第一次尝试使用MySQL,这可能不是非常优化,它用于学校和学习目的。我正在尝试创建一个非常基本的系统,将用户及其消息存储在数据库中。

非常感谢任何帮助。感谢。

1 个答案:

答案 0 :(得分:0)

可以像这样查询(join和date_sub)

delete from  `messages` 
inner join `user` on `messages`.user_id = `user`.id
and `user`.last_seen < DATE_SUB(NOW(), INTERVAL 30 DAY) ;