MySQL从日期列中排序每个第一个唯一行?

sai*_*int 0 mysql

我有一张桌子如下,我无法得到我想要的结果.

我想要的是获得每个独特的最新消息user_id.我之前曾问过类似的问题,但我觉得自己像个白痴,因为我仍然没有得到它.我怎么想使用MySQL order bygroup by在一起?使用distinct也不起作用.

+---------+---------------------+------------------+
| user_id | created_at          | message          |
+---------+---------------------+------------------+
|       2 | 2011-02-06 19:53:59 | sd               |
|       2 | 2011-02-06 20:11:41 | working on st..  |
|       3 | 2011-02-06 20:40:14 | testing applica..|
|       3 | 2011-02-06 21:35:11 | testing appli..  |
|       3 | 2011-02-06 23:09:34 | testing af..     |
+---------+---------------------+------------------+
Run Code Online (Sandbox Code Playgroud)

这就是它应该如何回归

+---------+---------------------+------------------+
| user_id | created_at          | message          |
+---------+---------------------+------------------+
|       2 | 2011-02-06 20:11:41 | working on st..  |
|       3 | 2011-02-06 23:09:34 | testing af..     |
+---------+---------------------+------------------+
Run Code Online (Sandbox Code Playgroud)

这确实以正确的格式返回,但它会获取一些随机消息.

select user_id,created_at, message from status group by user_id order by created_at desc
Run Code Online (Sandbox Code Playgroud)

谢谢.

Jan*_*Jan 9

SELECT
  user_id,
  created_at,
  message
FROM
  status
    JOIN
      (SELECT user_id,MAX(created_at) AS max 
       FROM status 
       GROUP BY user_id) max_created_at ON 
     (max_created_at.user_id = user_id AND max_created_at.max = created_at)
Run Code Online (Sandbox Code Playgroud)