如何在具有这些多重条件的SQL中进行查询?

时间:2018-09-05 02:52:58

标签: mysql

表格数据(部分)

| 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

2 个答案:

答案 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。

SQLFiddle demo

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