【转】MySQL实现Oracle里的 rank()over(ORDER BY)&...

【转】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
Sql代码

  1. SELECT id,
  2. score,
  3. rank
  4. FROM (SELECT tmp.id,
  5. tmp.score,
  6. @rank := @rank + 1 AS
(0)

相关推荐