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

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

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;

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

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

相关文章:

你感兴趣的文章:

标签云: