我目前正在学习如何在MySQL数据库中使用过程。我在一个测试数据库中有两个表,一个叫做用户,一个叫消息。
如果删除列等于1,我尝试删除消息表中的行,使用以下方法:
DELETE FROM `messages` WHERE `delete` = 1;
效果很好。
然后,在我的users表中,有一个列的时间戳为lastrongeen(例如,2016-05-08 13:00:26),另一个列为user_id,每个用户都有自己的唯一id(例如,123456789)。在我的表消息中,有一列叫做receiver_id。我想做一个过程,删除表消息中的每一行,其中user_ID(在用户表中)和receiver_ID(在消息表中)的ID匹配,并且时间戳日期(在users表和lastrongeen列中)是否早于30天。
我尝试了几种不同的方法,但似乎都不起作用。知道怎么做吗?
这几乎是我第一次尝试使用MySQL,这可能不是很优化,它是为了学校和学习的目的。我正在尝试制作一个非常基本的系统,将用户及其消息存储在数据库中。
如有任何帮助,我们将不胜感激。谢谢
可以这样查询(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) ;