加入收藏 | 设为首页 | 会员中心 | 我要投稿 温州站长网 (https://www.0577zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL怎样实现组内排序

发布时间:2022-02-23 17:22:38 所属栏目:MySql教程 来源:互联网
导读:MySQL如何实现组内排序?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧! 我们要在MySQL中实现Oracle中的rank()函数功能,即组内排序,具体来说: 就是对student表中
       MySQL如何实现组内排序?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!
  
  我们要在MySQL中实现Oracle中的rank()函数功能,即组内排序,具体来说: 就是对student表中按照课程(course)对学生(name)按分数(score)高低进行排名。
 
  首先新建存储过程realize_rank_in_MySQL,代码如下:
 
DROP PROCEDURE IF EXISTS realize_rank_in_MySQL;
DELIMITER ;;
CREATE PROCEDURE realize_rank_in_MySQL()
BEGIN
    DECLARE i int;
    SET i = 0;
    WHILE i < (select count(DISTINCT course) from student) DO
            SET @ROW =0;
            INSERT INTO student_rank
            SELECT *, (@ROW:=@ROW+1) AS rank FROM student
            WHERE course=(select DISTINCT course from student limit i,1)
            ORDER BY score DESC;
            set i = i + 1;
    END WHILE;
END
;;
DELIMITER ;
然后输入以下查询语句即可:
 
drop table if exists student_rank;
create table student_rank like student;
alter table student_rank add rank int;
call realize_rank_in_MySQL;
select * from student_rank;
 
注意:这里的排名并没有实现分数相同时排名也一样的情形。
 
感谢各位的阅读!看完上述内容,你们对MySQL如何实现组内排序大概了解了吗?

(编辑:温州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读