转自 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
分享到:
2012-08-16 17:54
浏览 10912
分类:数据库
评论