我有一张ID与积分表,我想根据他的积分返回所需身份证的等级。我想我可以这样做,如果我可以根据点对表进行排序,然后选择所需的id的行号。问题是我不知道如何在一个查询中执行这两个操作(对表进行排序,然后选择行号)。
注意:我使用php prepared语句来执行查询。
有关如何一步完成两项操作的任何帮助。
数据样本:
ID Points
x 12
y 15
w 4
z 30
必需:
to return the rank of any ID. example.. Where Id = y --> it returns "2". (the rank in the table)
更新
我执行了以下代码并对表进行排序并正确排名,我现在需要选择所需的ID(ID = x)。怎么做?
SET @rank=0;
SELECT ID, Points, @rank:=@rank+1 AS rank From Cars ORDER BY Points DESC;
答案 0 :(得分:1)
此示例可以帮助您
mysql> SELECT ID,points, @curRank := @curRank + 1 as rank from gg ,(SELECT @curRank := 0) r order by points;
+------+--------+------+
| ID | points | rank |
+------+--------+------+
| w | 4 | 1 |
| x | 12 | 2 |
| y | 15 | 3 |
| z | 30 | 4 |
+------+--------+------+
4 rows in set (0.00 sec)
答案 1 :(得分:0)
您可以使用子查询在MySQL中实现官方ANSI排名函数:
select t.*,
(select 1 + count(*)
from t t2
where t2.points < t.points
) as rank
from t;
这也可以使用变量来完成,但它相当复杂。