我有以下数据库方案,其中收集了所有用户操作:
user_action
===============================
user_id action_id timestamp
===============================
1 1 2022/05/07 17:23
1 2 2022/05/07 17:24
1 1 2022/05/07 17:25
2 1 2022/05/07 17:23
2 2 2022/05/07 17:24
3 2 2022/05/07 17:23
3 1 2022/05/07 17:24
action
===============================
id name
===============================
1 blocked
2 unblocked
目标是找到所有最近被屏蔽的用户.因此,预期的结果是找到1
和3
个用户ID,因为这些用户最近被阻止了.
我试着使用下面的SQL,但仍然没有很好的理解如何完成这一点:
select user_id, action_id, max(timestamp) as timestamp
from user_action
where action_id in (1,2)
group by user_id, action_id
当前查询只能返回以下内容:
===============================
user_id action_id timestamp
1 2 2022/05/07 17:24
1 1 2022/05/07 17:25
2 1 2022/05/07 17:23
2 2 2022/05/07 17:24
3 2 2022/05/07 17:23
3 1 2022/05/07 17:24
对于上面的结果,我需要告诉所有用户,其中action_id=1,timestamp大于action_id=2