如何在sql中查询这些多条件?

g52tjvyc  于 2021-06-20  发布在  Mysql
关注(0)|答案(3)|浏览(340)

表数据(部分) `| user_id | count | create_time | | ------- | ----- |

omvjsjqw

omvjsjqw1#

  • | | 10 | 20 | 2018-08-08 | | 10 | 19 | 2018-08-09 | | 2 | 15 | 2018-08-04 | | 5 | 30 | 2018-08-10 |####查询条件 条件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
nfs0ujit

nfs0ujit2#

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
9jyewag0

9jyewag03#

根据您指定的条件和您给定的数据视图,此(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 ; 子查询只选择 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

输出相同。sqlfiddle演示

相关问题