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