Mysql - 获取不同的记录

时间:2011-03-22 17:06:16

标签: mysql sql

我有以下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”

有什么想法吗?

3 个答案:

答案 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);