Nous devons maintenant implémenter une telle fonction : trier la taille des enfants de l'âge correspondant dans la base de données et obtenir le classement en taille de l'enfant avec l'ID spécifié. Par exemple, vous souhaitez interroger le classement en taille de l'enfant de 8 ans portant l'ID 9527 parmi la taille de tous les enfants de 8 ans. Je ne connais pas grand-chose aux bases de données, donc je me contente généralement d'ajouter, de supprimer, de modifier et de supprimer, donc je ne sais pas comment implémenter cette fonction.
J'ai interrogé certaines informations en ligne. Je les ai d'abord triées, j'ai généré le numéro de série de la ligne, puis j'ai renvoyé le numéro de série correspondant à l'ID de l'enfant. Il existe une déclaration similaire comme suit
.sélectionnez l'identifiant, la hauteur, (@rowno:=@rowno+1) comme rowno du test, (select (@rowno:=0)) b
trier par hauteur desc;
Sur cette base, interrogez l'emplacement :
sélectionnez rowno dans (sélectionnez l'identifiant, la hauteur, (@rowno:=@rowno+1) comme rowno du test,
(select (@rowno:=0)) b ordre par hauteur desc) c où id = 9527;
Ma question est :
1. Que sont (@rowno:=@rowno+1), (select (@rowno:=0)), b et C dans la déclaration ? Je l'ai recherché et j'ai découvert qu'il s'agissait d'une affectation nommée personnalisée, mais je ne sais pas exactement comment le comprendre. Que font les b et c ? paraître méchant ?
2. Je souhaite ajouter une condition à cette déclaration, qui est le classement en termes de taille des enfants de huit ans. Autrement dit, je dois ajouter où l'âge est égal à 8 à la première déclaration de tri. ajouté ? J'ai essayé de l'ajouter après le test et à plusieurs autres endroits, mais j'ai eu des erreurs, je ne sais pas comment l'ajouter.
Je suis troublé depuis un jour. J'espère que les crevettes de la base de données pourront aider à répondre à ces deux questions. Merci beaucoup ! ! !
1, obtenez la taille de 9527 comme h
2, sélectionnez count(0) à partir de tb où âge = 8 et taille > h;
3, puis le classement de taille de 9527 est égal à count + 1,
Cela n'a pas besoin d'être si compliqué, le classement par taille, si vous classez de haut en bas, calculez-le comme ceci :
a=champ de taille
sélectionnez le nombre (*) d'enfants où
age=8 et
a>= (sélectionnez un parmi les enfants où id=9527 );
count(*) est le classement
mysql ne prend pas en charge les fonctions de classement... Dans des bases de données relativement puissantes telles que Oracle, Postgres, etc., cela peut être facilement implémenté en utilisant row_number()
Si la colonne de la base de données est id, age, height
select id, age , hauteur,
row_number() over (partition par ordre d'âge par hauteur desc) comme rn
from tb