转自 http://www.oschina.net/question/12_63477
我正在用 MySQL 客户端的时候,突然想到如果可以给查询结果添加排名该多好啊,然后就找到了一个简单的解决办法。
下面是一个示例表的数据:
然后我们要根据 Roll_No 字段进行排序并给出排名,我们首先必须定义一个初始值为0的变量,然后在查询结果中使用这个变量。
如下面的代码:
1 | SET @counter=0; |
2 |
3 | SELECT @counter:=@counter+1 AS Rank,LastName,Roll_no as Roll FROM Students ORDER BY Roll_no ASC ; |
执行该语句的结果如下:
更多关于自定义变量的内容请看 MySQL 的文档 。
用一条sql搞定:
--也就是把临时变量, 放在from 子句里.
SELECT @counter:=@counter+1 AS Rank,LastName,Roll_no as Roll FROM Students,(SELECT @counter:=0) AS t
ORDER BY Roll_no ASC;
不用临时变量, 用表的自关联
SELECT
(SELECT COUNT(ROLL_NO) FROM Students WHERE s.ROLL_NO <= ROLL_NO) AS Rank,
s.LastName, s.Roll_no AS Roll
FROM Students s
ORDER BY s.Roll_no ASC