我的数据库中有2个不同的表,名称分别是:等级,设置。
这是每个表的样子,其中包含一些记录:
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;
不确定这是您想要的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句