recherche

Maison  >  Questions et réponses  >  le corps du texte

php - Tri MySQL et obtention du numéro de série correspondant

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 ! ! !

过去多啦不再A梦过去多啦不再A梦2809 Il y a quelques jours694

répondre à tous(3)je répondrai

  • 巴扎黑

    巴扎黑2017-05-16 13:13:51

    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,

    répondre
    0
  • phpcn_u1582

    phpcn_u15822017-05-16 13:13:51

    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

    répondre
    0
  • 伊谢尔伦

    伊谢尔伦2017-05-16 13:13:51

    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

    répondre
    0
  • Annulerrépondre