Maison > base de données > tutoriel mysql > Comment numéroter les lignes par groupe dans MySQL ?

Comment numéroter les lignes par groupe dans MySQL ?

Barbara Streisand
Libérer: 2024-11-11 21:52:03
original
470 Les gens l'ont consulté

How to Number Rows by Group in MySQL?

Numérotation des lignes par groupe dans MySQL

Considérez la structure de tableau suivante :

id crew_id amount type
1 4 1000 AUB
2 4 1500 AUB
3 5 8000 CA
4 4 1000 CA
5 5 1000 AUB
6 6 3000 AUB
7 4 2000 CA
8 6 3500 AUB
9 4 5000 AUB
10 5 9000 CA
11 5 1000 CA

Pour générer un ensemble de résultats qui comprend un numéro de ligne pour chaque combinaison de crew_id et de type, exécutez ce qui suit requête :

SELECT    id,
              crew_id,
              amount,
              type,
             ( 
                CASE type 
                WHEN @curType 
                THEN @curRow := @curRow + 1 
                ELSE @curRow := 1 AND @curType := type END
              ) + 1 AS rank
    FROM      Table1 p,
              (SELECT @curRow := 0, @curType := '') r
   ORDER BY  crew_id,type asc;
Copier après la connexion

Explication :

  • La requête initialise d'abord deux variables utilisateur, @curRow et @curType, pour suivre le numéro de ligne actuel et le valeur actuelle du type, respectivement.
  • Dans la requête principale, l'instruction CASE vérifie si la valeur actuelle du type correspond à la valeur précédemment stockée dans @curType. S'ils correspondent, il incrémente @curRow de 1. Sinon, il réinitialise @curRow à 1 et met à jour @curType avec la nouvelle valeur.
  • L'expression (@curRow := @curRow 1) 1 ajoute le ou réinitialisez la valeur de @curRow de 1 pour générer le numéro de ligne.
  • La requête est classée par crew_id et tapez pour regrouper et numéroter correctement les lignes.

Sortie :

id crew_id amount type row_number
1 4 1000 AUB 1
2 4 1500 AUB 2
9 4 5000 AUB 3
4 4 1000 CA 1
7 4 2000 CA 2
5 5 1000 AUB 1
3 5 8000 CA 1
10 5 9000 CA 2
11 5 1000 CA 3
6 6 3000 AUB 1
6 6 3000 AUB 2

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal