iteye_21157 2011-06-21 09:52
浏览 1585
已采纳

跪地求解 如何用MySQL 实现Oracle里的 rank()over(ORDER BY) 功能?

小弟在google baidu 搜索很久后依然无果,无奈只好来je求教各位高人指导。。。
例如我有一张表 表名为 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语句在mysql下实现如上功能,恳请各位大大费神帮忙!

感激不尽!!!

 

展开全部

  • 写回答

2条回答 默认 最新

  • iteye_8576 2011-06-22 01:19
    关注

    rownum这个变量可以不要
    [code="sql"]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;[/code]

    如果要实现oracle中,rank() over(partition by [id] order by [col])需要更多变量了,你可以试着写出满足自己需求的函数

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)
编辑
预览

报告相同问题?

悬赏问题

  • ¥15 java和硬件交互问题
  • ¥15 前台多人编辑时怎么让每个人保存刷新都互不干扰
  • ¥20 如何用Python删除单元格内连续出现的重复词?
  • ¥15 WangEditor嵌入到geeker-admin中,回车没有办法换行
  • ¥30 stm32f103c8t6制作万能红外遥控器
  • ¥15 有人会fastcrud写前端页面吗
  • ¥15 如何解除Uniaccess管控
  • ¥15 微信小程序跳转关联公众号
  • ¥15 Java AES 算法 加密采用24位向量报错如何处理?
  • ¥15 使用X11可以找到托盘句柄,监控到窗口点击事件但是如何在监听的同时获取托盘中应用的上下文菜单句柄