gpt4 book ai didi

mysql - 如何从 2 个表中获取 MySQL 的排名?

转载 作者:行者123 更新时间:2023-11-29 12:53:41 25 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 表中按 user_id 获取特定用户的排名(按积分排序)。另外,如果用户在 settings 表中设置了 active = 1,我只想将用户包含在排名结果中。

我有一个简单的排名查询,但它并不是真正有效,因为它确实包括每个人,即使用户不活跃:

SELECT * FROM 
(SELECT @sort:=@sort+1 AS sort, points, userid
FROM rank,
(SELECT @sort := 0) s
ORDER BY points DESC) t
WHERE userid= 8

有什么想法吗,我怎样才能在这里实现我的目标?

最佳答案

很少有子查询。首先以正确的顺序获取所有活跃用户。它用作另一个查询的来源来添加排名。然后将其用作您实际感兴趣的用户 ID 的积分和排名的来源

SELECT sort, points
FROM
(
SELECT @sort:=@sort + 1 AS sort, points, userid
FROM
(
SELECT rank.points, rank.userid
FROM rank
INNER JOIN settings
ON rank.userid = settings.userid
WHERE settings.active = 1
ORDER BY points DESC
) sub0
CROSS JOIN (SELECT @sort:=0) sub2
) sub1
WHERE sub1.userid = 8

关于mysql - 如何从 2 个表中获取 MySQL 的排名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24409513/

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