Supposons que la table soit étudiante et que les données soient les suivantes :
Nous voulons implémenter la fonction Rank() dans Oracle dans MySQL, c'est-à-dire trier dans le groupe, plus précisément : Il s'agit de classer les étudiants (nom) dans le tableau des étudiants selon le cours (cours) et selon la note (score).
Créez d'abord une nouvelle procédure stockée réalise_rank_in_MySQL, le code est le suivant :
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 ;
Saisissez ensuite l'instruction de requête suivante :
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;
Le résultat est le suivant :
Remarque : Le classement ici ne rend pas compte de la situation où le classement est le même lorsque les scores sont les mêmes.
Articles connexes :
implémentation de la fonction de classement MySQL_MySQL
Utilisation du SQL standard dans la ruche pour implémenter le tri intra-groupe
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!