我有一个每分钟运行的Mysql事件,用于删除超过一个小时且尚未验证的记录。
所以table1有(例子)
userid | timestamp
------------------
1 | >1 Hr
2 | <1 Hr
3 | <1 Hr
4 | >1 Hr
所以这里,用户ID 1&amp; 4将被删除。
我还需要从另一个名为profiles的表中删除数据,其中当用户注册时会自动插入userid和其他数据。所以:
所以table2有
userid | ProfileName
------------------
1 | James
2 | Kirk
3 | Lars
4 | Robert
这里,在上表中,1&amp; 4也需要删除,因为它们已从上表中删除。此表中没有时间戳列(我无法添加)。
删除数据:
delete from table1 where rs_user_sg_ts >= date_sub(NOW(), interval 1 hour);
如何使用相同的事件一次删除两个表中的数据?
答案 0 :(得分:1)
DELETE a.*, b.*
FROM table1 a
JOIN table2 b
ON a.user_id = b.user_id
WHERE a.user_id in
(
select user_id from table1
where rs_user_sg_ts >= date_sub(NOW(), interval 1 hour
);
答案 1 :(得分:0)
DELETE t1, t2
FROM table1 AS t1
INNER JOIN table2 AS t2 ON t1.userid = t2.userid
WHERE t1.rs_user_sg_ts >= date_sub(NOW(), interval 1 hour)
有关多表删除语法,请参阅http://dev.mysql.com/doc/refman/5.0/en/delete.html。
答案 2 :(得分:0)
在我看来,你不应该在单个查询中删除多个表。
如果您仍然感兴趣,请使用以下内容:
多表语法:
DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
tbl_name[.*] [, tbl_name[.*]] ...
FROM table_references
[WHERE where_condition]
Refrence: http://dev.mysql.com/doc/refman/5.6/en/delete.html
希望这有帮助!
答案 3 :(得分:0)
您可以按如下方式从多个表中删除:
delete t1,t2
from `table1` t1, `table1`t2
where t1.userid=t2.userid
and t1.rs_user_sg_ts >= date_sub(NOW(), interval 1 hour)