gpt4 book ai didi

mysql - 如何将表连接到 MySQL 中的排名 SELECT 查询?

转载 作者:行者123 更新时间:2023-11-29 05:22:10 24 4
gpt4 key购买 nike

我的数据库中有 2 个不同的表,名称分别为:等级、设置。

下面是每个表中包含几条记录的样子:

表#rank:

id  points userid
-- ----- ------
1 500 1
2 300 2
3 900 3
4 1500 4
5 100 5
6 700 6
7 230 7
8 350 8
9 850 9
10 150 10

表#设置:

userid    active 
------ ------
1 0
2 1
3 1
4 1
5 1
6 0
7 1
8 1
9 0
10 1

我基本上想要实现的是从#rank 中选择所有 并按分数降序对结果进行排名。例如:期望的结果如下:

rank points userid
---- ----- ------
1 100 5
2 150 10
3 230 7
4 300 2
5 350 8
6 500 1
7 700 6
8 850 9
9 900 3
10 1500 4

到目前为止,我有这个查询来对结果进行排名,但我无法加入另一个表,因为它给我一个没有创建列的错误。

SELECT    @curRank := @curRank + 1 AS rank, a.points, a.userid
FROM rank p, (SELECT @curRank := 0) r
ORDER BY points DESC;

关于如何达到预期结果有什么建议吗?

编辑:

你们完全正确。我实际上忘记提及,我只想选择活跃人数 = 1 的用户。抱歉。

最佳答案

试试这个:

SELECT  @curRank := @curRank + 1 AS rank, points, userid
FROM
(SELECT rr.points, rr.userid
FROM rank rr INNER JOIN settings sr ON sr.userid=rr.userid
AND sr.active=1
ORDER BY rr.points DESC) AS M, (SELECT @curRank := 0) r;

SQLFIDDLE DEMO

不确定这是您想要的。

关于mysql - 如何将表连接到 MySQL 中的排名 SELECT 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24355198/

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