在MySQL中,如何将表连接到分级选择查询?
我的数据库中有两个不同的表,名称为:rank,settings 下面是每个表的外观,其中包含一些记录: 表格排名: 表格设置: 我基本上想要实现的是从排名中选择所有内容,并按分数的降序排列结果。 例如: 预期结果如下:在MySQL中,如何将表连接到分级选择查询?,mysql,sql,Mysql,Sql,我的数据库中有两个不同的表,名称为:rank,settings 下面是每个表的外观,其中包含一些记录: 表格排名: 表格设置: 我基本上想要实现的是从排名中选择所有内容,并按分数的降序排列结果。 例如: 预期结果如下: rank points userid ---- ----- ------ 1 100 5 2 150 10 3 230 7 4 300 2 5 350 8 6
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;
不确定这是您想要的。您的查询几乎可以正常工作,只有两个小问题 MySQL找不到该列,因为您已经从秩p中选择了列a.points,a.userid。从等级a更改为可修复此问题。第二个问题是排序顺序,将desc更改为asc,您将获得所需的顺序
SELECT @curRank := @curRank + 1 AS rank, a.points, a.userid
FROM rank a, (SELECT @curRank := 0) r
ORDER BY points asc
从列组连接其他表上。。。交叉连接选择@currank。。。基于期望的结果,为什么需要加入表?可以有降序,也可以从最低到最高,而不是两者都有。哇,这正是我一直想要的!非常感谢你,伙计,你是个救命恩人!
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;
SELECT @curRank := @curRank + 1 AS rank, a.points, a.userid
FROM rank a, (SELECT @curRank := 0) r
ORDER BY points asc