Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MySQL中,如何将表连接到分级选择查询?_Mysql_Sql - Fatal编程技术网

在MySQL中,如何将表连接到分级选择查询?

在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,settings

下面是每个表的外观,其中包含一些记录:

表格排名: 表格设置: 我基本上想要实现的是从排名中选择所有内容,并按分数的降序排列结果。 例如: 预期结果如下:

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