Maison >base de données >tutoriel mysql >Comment générer des numéros de ligne par groupe dans MySQL ?

Comment générer des numéros de ligne par groupe dans MySQL ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-24 00:20:10683parcourir

How to Generate Row Numbers per Group in MySQL?

Numéro de ligne par groupe dans MySQL

Dans les systèmes de gestion de bases de données, comprendre la numérotation des lignes au sein des groupes est crucial pour l'analyse et la manipulation des données. Dans MySQL, la génération de numéros de ligne en fonction de critères spécifiques, tels que l'ID et le type d'équipage, peut être réalisée grâce à diverses techniques.

Solution

Pour générer un numéro de ligne pour pour chaque combinaison unique d'ID et de type d'équipage, vous pouvez utiliser la requête MySQL suivante :

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;

Dans ce requête :

  • Table1 représente la table d'origine contenant les données.
  • @curRow et @curType sont des variables définies par l'utilisateur initialisées respectivement à 0 et à une chaîne vide.
  • L'instruction CASE gère la numérotation des lignes en fonction du type. Si le type correspond à @curType, le numéro de ligne (rang) est incrémenté de un. Sinon, il réinitialise @curRow à 1 et met à jour @curType avec le type actuel.
  • Le 1 dans l'instruction CASE garantit que le numéro de ligne commence à 1.

Cette requête renvoie la sortie souhaitée avec les numéros de ligne ajoutés en tant que colonne supplémentaire nommée « rang ».

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