当前位置:首页 > 开发 > 数据库 > 正文

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

发表于: 2011-06-22   作者:borglee   来源:转载   浏览:
摘要: 由于MySQL没有Oracle里一样的rank()over()函数,所以我们只能使用SQL语句利用变量来实现这个功能。在此非常感谢 http://hudingchen.iteye.com/ 他的帮助。 例如我有一张表 表名为 A: ID    SCORE 1      28 2  
由于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) 功能

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号