首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > Mysql >

MySQL兑现Oracle里的 rank()over(ORDER BY) 功能

2012-07-25 
MySQL实现Oracle里的 rank()over(ORDER BY) 功能由于MySQL没有Oracle里一样的rank()over()函数,所以我们只

MySQL实现Oracle里的 rank()over(ORDER BY) 功能
由于MySQL没有Oracle里一样的rank()over()函数,所以我们只能使用SQL语句利用变量来实现这个功能。在此非常感谢 http://hudingchen.iteye.com/ 他的帮助。


例如我有一张表 表名为 A:
ID    SCORE
1      28
2      33
3      33
4      89
5      99
6      68
7      68
8      78
9      88
10    90

现在我需要如下结果:

ID    SCORE    RANK
5      99              1
10    90              2
4      89              3
9      88              4
8      78              5
6      68              6
7      68              7
2      33              8
3      33              9
1      28             10



SELECT id,       score,       rank  FROM (SELECT tmp.id,               tmp.score,               @rank := @rank + 1 AS rank          FROM (SELECT id,                       score                  FROM a                 ORDER BY score desc) tmp,               (SELECT @rank   := 0) a) RESULT;


希望能够帮助更多的人 感谢您的来访!

热点排行