| user_id | count | create_time |
| ------- | ----- | ----------- |
| 10 | 20 | 2018-08-08 |
| 10 | 19 | 2018-08-09 |
| 2 | 15 | 2018-08-04 |
| 5 | 30 | 2018-08-10 |
条件1 :查询结果必须为count
desc
条件2 :user_id
可能会重复(例如:user_id = 10)
条件3 :每个user_id
在查询后只有一个数据
条件4 :“条件3”中的唯一数据应该是create_time
最近的数据。例如,当user_id=10
时,数据的create_time
应该是“ 2018-08-09”。 (此条件为可选)
条件5 :限制100
答案 0 :(得分:1)
根据您指定的条件和给定的数据视图,此(MySQL)查询应执行您想要的操作:
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
满足;
子查询满足条件2、3和4,该子查询仅选择具有最新user_id
的{{1}}值;
create_time
满足条件5。
对于SQL Server,您可以使用以下查询:
LIMIT 100
输出是相同的。 SQLFiddle demo
答案 1 :(得分:0)
Select top 100
User_id,
Count,
(Select max(create_time) from table2 t2 where t2.user_id = t.user_id)
From table t
Order by count desc