SELECT d.user_id, d.count
FROM data d
WHERE create_time = (SELECT MAX(create_time)
FROM data d1
WHERE d1.user_id = d.user_id)
ORDER BY `count` DESC
LIMIT 100
输出:
user_id count
5 30
10 19
2 15
条件1满足于 ORDER BY count DESC ; 子查询只选择 user_id 哪个是最近的 create_time ; 条件5满足 LIMIT 100 . sqlfiddle演示 对于sql server,可以使用以下查询:
SELECT TOP 100 d.user_id, d.count
FROM data d
WHERE create_time = (SELECT MAX(create_time)
FROM data d1
WHERE d1.user_id = d.user_id)
ORDER BY d.count DESC
3条答案
按热度按时间omvjsjqw1#
####查询条件 条件1:查询结果必须按
count描述 条件2:
user_id可能重复(例如:user\u id=10) 条件3:每个
user_id查询后只有一条数据 条件4:“条件3”中的唯一一个数据应该是
create_time是最近的。例如,当
user_id=10,数据是
create_time` 应为“2018-08-09”(此条件是可选的)条件5:限制100
nfs0ujit2#
9jyewag03#
根据您指定的条件和您给定的数据视图,此(mysql)查询应该执行您想要的操作:
输出:
条件1满足于
ORDER BY count DESC
; 子查询只选择user_id
哪个是最近的create_time
; 条件5满足LIMIT 100
.sqlfiddle演示
对于sql server,可以使用以下查询:
输出相同。sqlfiddle演示