日期:2014-05-16 浏览次数:20708 次
转自? 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?