gpt4 book ai didi

MySQL添加分数列到SELECT高分查询

转载 作者:行者123 更新时间:2023-11-29 09:38:23 25 4
gpt4 key购买 nike

我有一个名为 users 的数据库,其中包含以下内容:

userid   name     highscore
0 sam 20
1 james 39
2 jack 3
3 harry 46

高分表查询

我正在使用在 this 上找到的查询发布以收集我的高分表结果:

SELECT s.*
FROM users AS s
JOIN
( SELECT DISTINCT highscore
FROM users
ORDER BY highscore DESC
LIMIT 3
) AS lim
ON s.highscore = lim.highscore
ORDER BY s.highscore DESC ;

这将返回前 3 个结果,即包含 sam、james 和 harry 的行。

排名查询

我有一个单独的查询来返回表中单个用户的排名:

SELECT 1 + COUNT(*) AS rank 
FROM users
WHERE highscore > (SELECT highscore FROM users WHERE name = '$name');

排名是动态返回的,而不是存储在“排名”列中,因为它们会根据其他用户的高分而不断变化。

目标

我想将排名查询合并到高分表查询中,以便 $result 中的每一行都包含以下内容:...,"rank": “(用户排名)”。这可能吗?谢谢。

最佳答案

如果你想要这样的东西

userid  name    highscore   rank
3 harry 46 1
1 james 39 2
0 sam 20 3

您可以使用以下查询

SELECT s.*, @curRank := @curRank + 1 AS rank
FROM users AS s
JOIN
( SELECT DISTINCT highscore
FROM users
ORDER BY highscore DESC
LIMIT 3
) AS lim
ON s.highscore = lim.highscore
, (SELECT @curRank := 0) r
ORDER BY s.highscore DESC ;

关于MySQL添加分数列到SELECT高分查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57137913/

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