gpt4 book ai didi

mysql - 从表中获取用户的最高分

转载 作者:行者123 更新时间:2023-11-29 01:20:13 25 4
gpt4 key购买 nike

我觉得这是一个非常简单的问题,但也许我现在脑子放屁,似乎无法弄清楚如何去做。

我有一个如下所示的 MySQL 表结构

+---------------------------------------------------+
| id | date | score | speed | user_id |
+---------------------------------------------------+
| 1 | 2016-11-17 | 2 | 133291 | 17 |
| 2 | 2016-11-17 | 6 | 82247 | 17 |
| 3 | 2016-11-17 | 6 | 21852 | 17 |
| 4 | 2016-11-17 | 1 | 109338 | 17 |
| 5 | 2016-11-17 | 7 | 64762 | 61 |
| 6 | 2016-11-17 | 8 | 49434 | 61 |

现在我可以通过这样做获得特定用户的最佳性能

SELECT * 
FROM performance
WHERE user_id = 17 AND date = '2016-11-17'
ORDER BY score desc,speed asc LIMIT 1

这应该返回 ID = 3 的行。现在我想要的是运行一个查询,以便能够为表中的每个唯一 user_id 返回 1 个这样的行。所以最终的结果会是这样的

+---------------------------------------------------+
| id | date | score | speed | user_id |
+---------------------------------------------------+
| 3 | 2016-11-17 | 6 | 21852 | 17 |
| 6 | 2016-11-17 | 8 | 49434 | 61 |

此外,我能否在同一个查询中提出另一个问题,该问题将根据相同的排序标准(分数降序、速度升序)进一步对该最终结果表进行排序。谢谢

最佳答案

一个简单的方法使用相关子查询:

select p.* 
from performance p
where p.date = '2016-11-17' and
p.id = (select p2.id
from performance p2
where p2.user_id = p.user_id and p2.date = p.date
order by score desc, speed asc
limit 1
);

这应该能够利用 performance(date, user_id, score, speed) 上的索引。

关于mysql - 从表中获取用户的最高分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40662585/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com