假設表格為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;
結果如下:
注意:這裡的排名並沒有達到分數相同時排名也一樣的情形。
相關文章:
#以上是MySQL_實作組內排序-Oracle中的rank()函數的功能的詳細內容。更多資訊請關注PHP中文網其他相關文章!