Maison >base de données >tutoriel mysql >Comment implémenter la numérotation séquentielle des lignes avec le regroupement de clés dans SQL ?

Comment implémenter la numérotation séquentielle des lignes avec le regroupement de clés dans SQL ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-22 19:57:16905parcourir

How to Implement Sequential Row Numbering with Key Grouping in SQL?

Numérotation séquentielle des lignes avec regroupement de clés en SQL

SQL offre une fonctionnalité puissante pour énumérer séquentiellement les lignes au sein de groupes de clés spécifiques. Cette fonctionnalité s'avère particulièrement utile lorsque vous devez organiser des données en fonction de catégories ou d'attributs distincts. Explorons comment cette fonctionnalité fonctionne dans différents dialectes SQL.

Implémentation dans différents dialectes SQL

Les dialectes SQL suivants fournissent une solution pour la numérotation séquentielle des lignes par groupe de clés :

  • SQL Serveur
  • Oracle
  • PostgreSQL
  • Sybase
  • MySQL 8.0
  • MariaDB 10.2
  • SQLite 3.25

Exemples de données et projection souhaitée

Considérez l'exemple de tableau suivant avec des tuples (CODE, NAME) :

CODE NAME    
---- ----
A    Apple
A    Angel
A    Arizona
B    Bravo
C    Charlie
C    Cat
D    Dog
D    Doppler
D    Data
D    Down

Le souhaité projection utilisant CODE comme attribut de regroupement comme :

CODE C_NO NAME    
---- ---- ----
A    0    Apple
A    1    Angel
A    2    Arizona
B    0    Bravo
C    1    Charlie
C    0    Cat
D    0    Dog
D    1    Data
D    2    Down
D    3    Doppler

Requête SQL pour réaliser une numérotation séquentielle des lignes

Pour obtenir cette numérotation séquentielle des lignes par groupe de clés, vous pouvez exploiter la requête SQL suivante :

SELECT
    CODE,
    ROW_NUMBER() OVER (PARTITION BY CODE ORDER BY NAME) - 1 As C_NO,
    NAME
FROM
    MyTable

Cette requête partitionnera la table en fonction de la colonne CODE, triera les enregistrements dans chaque partition par la colonne NOM, puis soustrayez 1 du numéro de ligne résultant pour obtenir la numérotation séquentielle souhaitée à partir de 0 pour chaque groupe de clés.

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