gpt4 book ai didi

php - 需要通过唯一用户标识、最大轮次从 mysql 中提取数据,然后按另一个值排序

转载 作者:搜寻专家 更新时间:2023-10-31 22:09:45 25 4
gpt4 key购买 nike

几个月前,我问了一个与此类似的问题,得到了一些帮助并认为我找到了答案。 3 个月后,我发现这并没有 100% 奏效,所以我需要更多帮助,但现在我了解得更多,可以更好地提出问题。

我有一个带有 id, userid, rounds, reps, exerciseid 的 mysql 表

我需要针对我要拉动的练习拉动用户最高回合。因此,如果 exerciseid 为 8,我将需要该 exerciseid 的用户排名第一,但如果用户多次使用相同的 rounds,发生很多次,然后我需要按 reps 对它进行排序,以获得真正的最高性能。现在,在获得这些结果后,我需要按 roundsreps 对数据集进行排序,因此如果多个唯一用户具有相同的 rounds 即然后由 reps 订购。

这可以用纯 mysql 来完成,还是我最好用 PHP 提取数据并对所有内容进行排序?

SELECT
max(l.rounds) as rounds,
l.reps,l.userid
from leaderboard l
where l.exerciseid = 8
group by l.userid
order by
rounds desc,
reps desc

结构示例首先这是一个样本集

userid  exerciseid  rounds  reps
-- -- --
1 8 23 10
1 8 23 15
1 8 20 10
2 8 28 19
2 8 15 12
3 8 40 29


results I want

userid exerciseid rounds reps
-- -- --
3 8 40 29
2 8 28 19
1 8 23 15

最佳答案

如果我没有理解错的话,您首先要按用户 ID 和回合进行分组,以获得回合中的 maxreps。然后你想从中选择最大轮数。

这是在 MySQL 中表达这一点的一种方式:

select userid, rounds, maxreps
from (SELECT userid, l.rounds, MAX(l.reps) as maxreps
from leaderboard l
where l.exerciseid = 8
group by l.userid, l.rounds
) ur
where exists (select 1 from leaderboard lb where ur.userid = lb.userid and lb.exerciseid = 8 group by lb.userid having max(rounds) = ur.rounds))
order by rounds desc, maxreps desc

关于php - 需要通过唯一用户标识、最大轮次从 mysql 中提取数据,然后按另一个值排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14074552/

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