Mysql - получение отчетливых записей - PullRequest
1 голос
/ 22 марта 2011

У меня есть следующая таблица MySql (user_actions) со следующими столбцами: id, идентификатор_пользователя, созданный_ат, тип_ действия

Я хочу запрос sql, который получит последние действия, выполненные пользователем, без дублирования действий.

например: user_id 1 имеет 3 записи, которые имеют action_type "follow" и 2 записи с типом действия "unfollow"

в этом случае я хочу, чтобы запрос возвратил две записи, одну с action_type "follow" и одну с "unfollow"

есть мысли?

Ответы [ 3 ]

2 голосов
/ 22 марта 2011

Для этого вы можете использовать выражение group by SQL:

select user_id, action_type, max(created_at)
  from user_actions
 group by user_id, action_type
1 голос
/ 22 марта 2011

попробуйте это:

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
0 голосов
/ 22 марта 2011

Попробуйте этот запрос:

select * from user_actions where action_type, created_at in 
   (select action_type, max(created_at) from user_actions group by action_type);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...