我有以下MySql表(user_actions),其中包含以下列: id,user_id,created_at,action_type
我想要一个sql查询,它将获取用户执行的最新操作,而不会重复操作。
例如: user_id 1有3条记录,其action_type为“follow” 和2个具有action_type“unfollow”的记录
在这种情况下,我希望查询返回两条记录,一条记录为action_type“follow”,另一条记录为“unfollow”
有什么想法吗?
答案 0 :(得分:2)
您可以使用SQL group by子句:
select user_id, action_type, max(created_at)
from user_actions
group by user_id, action_type
答案 1 :(得分:1)
试试这个:
select ua.*
from user_actions ua
join (select max(id) as max_id,user_id,action_type from user_action group by user_id,user_action) ua_max
on ua.id=ua_max.max_id and ua.user_id=ua_max.user_id and ua.action_type=ua_max.action_type
答案 2 :(得分:0)
尝试此查询:
select * from user_actions where action_type, created_at in
(select action_type, max(created_at) from user_actions group by action_type);