MySQL_完成組內排序-Oracle中的rank()函數的技巧
發表時間:2023-07-16 來源:明輝站整理相關軟件相關文章人氣:
[摘要]假設表格為student, 數據如下:??我們要在MySQL中實現Oracle中的rank()函數功能,即組內排序,具體來說: 就是對student表中按照課程(course)對學生(name)按分...
假設表格為student, 數據如下:

??我們要在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;
??結果如下:

注意:這里的排名并沒有實現分數相同時排名也一樣的情形。
相關視頻:
尚觀Oracle入門到精通視頻教程
以上就是MySQL_實現組內排序-Oracle中的rank()函數的功能的詳細內容,更多請關注php中文網其它相關文章!
學習教程快速掌握從入門到精通的SQL知識。