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

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

    震惊

    震惊

编辑推荐
业务场景: 资产管理中的供需平衡监控。现在又如下“供需分析统计结果”表 现在需要求每个充电站的最
有的时候会遇到这样的问题,我们需要查询一张表,而且要按照业务排序,比如我需要如下的结果: 地区
总的来说,在 MySQL 中的ORDER BY有两种排序实现方式,一种是利用有序索引获取有序数据,另一种则是
总的来说,在 MySQL 中的ORDER BY有两种排序实现方式,一种是利用有序索引获取有序数据,另一种则是
近来在工作上遇到一件事情。我有一张用户订单表,这个订单表有一个order_id,是唯一约束。同时有一
原来表数据 现在需求是 每位userinfoid发表的最新一条数据 ( select smallblog. * ,rank() over (pa
create table B ( 店铺 VARCHAR2(100), 销售数量 VARCHAR2(100), 价格 VARCHAR2(100), 日期 DATE )
RANK()既是一个聚合函数,也是一个分析函数 其具体的语法如下: 聚合函数语法: 分析函数的语法: RA
出自:http://www.2cto.com/database/201307/227103.html Sql Server Row_Number()学习 Row_Number(
Oracle分析函数——函数RANK,DENSE_RANK,FIRST,LAST…|转| RANK 功能描述:根据ORDER BY子句中表达式
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号