mysql为所有具有相同名称的文件选择“按日期最新”

mysql为所有具有相同名称的文件选择“按日期最新”,mysql,Mysql,我有一个表,其中列出了用户的积分: id, created_at, user_id, points 1, 2018-11-01, 1, 20 2, 2018-11-03, 1, 12 3, 2018-11-04, 2, 15 ... 我现在想选择前50名用户,但只考虑用户的最新分数。i、 e.用户1有两个条目,只有最新的一个(2018-11-03)才算 预期结果: id, created_at, user_id, points 3, 2018-11-04, 2, 15 2, 2018-11-0

我有一个表,其中列出了用户的积分:

id, created_at, user_id, points
1, 2018-11-01, 1, 20
2, 2018-11-03, 1, 12
3, 2018-11-04, 2, 15
...
我现在想选择前50名用户,但只考虑用户的最新分数。i、 e.用户1有两个条目,只有最新的一个(2018-11-03)才算

预期结果:

id, created_at, user_id, points
3, 2018-11-04, 2, 15
2, 2018-11-03, 1, 12
...

您可以尝试使用相关子查询

select * from tablename a
where created_at in 
(select max(created_at) from tablename b where a.user_id=b.user_id)
order by points desc limit 50
在a中,您可以为每个
用户id
指定在
创建的
的最大值(最新的
创建的)。然后,您可以将此结果集连接到主表,以仅获取与最新创建的
对应的行

现在,使用这个结果集按以下顺序对<代码>点<代码>进行排序,只考虑前50个,使用<代码>限制50 < /代码>

SELECT t.*
FROM your_table AS t
JOIN
( SELECT
    user_id, MAX(created_at) AS latest_created_at 
  FROM your_table
  GROUP BY user_id 
) AS dt 
  ON dt.user_id = t.user_id AND 
     dt.latest_created_at = t.created_at 
ORDER by t.points DESC
LIMIT 50