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