【发布时间】:2014-06-23 05:19:03
【问题描述】:
我的数据库中有 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
表#settings:
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的用户。抱歉。
【问题讨论】:
-
from rank join other_table on ... cross join (select @currank ...) r -
根据想要的结果,为什么需要加入表格?
-
您可以使用降序或从低到高的顺序,不能同时使用。