您的位置:首页 > 数据库 > MySQL

为 MySQL 的查询结果添加排名字段

2014-03-26 17:08 741 查看
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 的文档

英文原文OSCHINA原创翻译



红薯

发帖于 1年前

5回/2060阅

标签:


MySQL OSCHINA原创翻译

举报
| 分享到

0收藏(11)


按默认排序 显示最新评论 共有5个评论 (最后回答:
1年前)

0



归海一刀1年前

有用!先收藏了。。。

评论(0)| 引用此评论|
举报

0



刘健1年前

@红薯 查询语句超出屏幕太多,这里要是能自动换行好点

--- 共有 1 条评论 ---

红薯手机上会这样,没辙哦:) (1年前)

评论(1)| 引用此评论|
举报| 来自 Android

0



浮生如斯1年前

SELECT (SELECT COUNT(ROLL_NO) FROM StudentsWHERE s.ROLL_NO <= ROLL_NO) AS Rank, s.LastName, s.Roll_noAS RollFROM Studentss ORDER BY s.Roll_noASC; O(∩_∩)O哈哈~ 这个不用自定义变量 不过好麻烦 不知道 MySql 有没有 自增列的关键字 直接可以在查询中生成一个自增的那种 记得SqlServer 就有一个( ⊙ o ⊙ )啊!

评论(0)| 引用此评论|
举报

0



八宝旗1年前

1条sql搞定

SELECT
@counter:=@counter+1
AS
Rank,LastName,Roll_no
as
Roll
FROM
Students,(SELECT
@counter:=0)
AS t
ORDER
BY
Roll_no
ASC
;


--- 共有 2 条评论 ---

八宝旗回复 @浮生如斯 :
这个好像不行,因为这个排名字段数据库中并没有存储,如果找到这种方法,麻烦也告我下,学习学习:) (1年前)

浮生如斯怎么可以不用自定义变量
搞定 这个 而且 查询语句又短的 (1年前)

评论(2)| 引用此评论|
举报

0



mark351年前

pgsql,ora有窗口函数干这活
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: