Mysql 如何在SQL中使用这些多条件进行查询? 表数据(部分)

Mysql 如何在SQL中使用这些多条件进行查询? 表数据(部分),mysql,Mysql,|用户id |计数|创建时间| | ------- | ----- | ----------- | | 10 | 20 | 2018-08-08 | | 10 | 19 | 2018-08-09 | | 2 | 15 | 2018-08-04 | | 5 | 30 | 2018-08-10 | 查询条件 条件1:查询结果必须按countdesc 条件2:用户id可能重复(例如:用户id=10) 条件3:每个用户id在查


|用户id |计数|创建时间|
| ------- | ----- | ----------- |
| 10      | 20    | 2018-08-08  |
| 10      | 19    | 2018-08-09  |
| 2       | 15    | 2018-08-04  |
| 5       | 30    | 2018-08-10  |

查询条件 条件1:查询结果必须按
count
desc

条件2
用户id
可能重复(例如:用户id=10)

条件3:每个
用户id
在查询后只有一条数据

条件4:来自“条件3”的唯一一个数据应该是创建时间最新的数据。例如,当用户id=10时,数据的创建时间应为“2018-08-09”。(此条件是可选的)


条件5:限制100

根据您指定的条件和您提供的数据视图,此(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通过计数描述的顺序满足; 子查询满足条件2、3和4,该子查询仅选择具有最新创建时间的
用户id
的值;
极限100满足条件5

对于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

输出是相同的

根据您显示的表,您的预期输出是什么?您同时标记了mysql和Sql Server。请编辑您的问题标签,以指示您正在使用的两个数据库平台中的哪一个。了解数据库平台将有助于回答您的问题。
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