从表中删除另一个表中的内容为真

时间:2015-04-23 12:35:12

标签: mysql

我有两个表:usersbans。我想要禁止禁止该行中的user (ID)未对30 days或更长时间有效的任何行。我的last_session中有一个名为users table的列保存为其上次连接的timestamp(as an integer),以及bans表中名为banned_user_id的列,只是ID的{​​{1}}。

3 个答案:

答案 0 :(得分:3)

尝试以下

Delete b.* from bans b, users u 
where b.banned_user_id = u.ID 
and u.last_session < subdate(now(),30)

答案 1 :(得分:0)

Prabin答案的变体。我更喜欢使用连接。

delete b
from bans b
inner join users u on
  b.banned_user_id = u.id 
where 
  u.last_session < subdate(now(),30)

答案 2 :(得分:0)

这个只删除禁令表中的记录,如问题所示:

delete from bans
where banned_user_id in (
  select user_id
  from users
  where last_session <= subdate(now(), 30)
)