Maison >base de données >tutoriel mysql >Comment numéroter séquentiellement des lignes au sein de groupes en SQL ?
Numérotation séquentielle des lignes par groupe de clés en SQL
La tâche de numérotation séquentielle des lignes regroupées par une clé spécifique en SQL est une exigence courante dans informatique. Pour y parvenir, diverses bases de données SQL offrent des fonctions et des techniques natives qui permettent une numérotation de lignes efficace et précise au sein de chaque groupe de clés.
Implémentation dans différentes bases de données
De nombreuses bases de données SQL populaires les bases de données fournissent des fonctions ou des extensions intégrées pour la numérotation séquentielle des lignes :
Exemple Requête
Considérons l'exemple de table suivant avec des tuples regroupés par le CODE colonne :
CODE | NAME ------|------ A | Apple A | Angel A | Arizona B | Bravo C | Charlie C | Cat D | Dog D | Data D | Down D | Doppler
Pour numéroter séquentiellement les lignes de chaque groupe CODE, la requête suivante peut être utilisée :
SELECT CODE, ROW_NUMBER() OVER (PARTITION BY CODE ORDER BY NAME) - 1 AS C_NO, NAME FROM MyTable;
Sortie
Le la requête produira la sortie suivante, avec des lignes numérotées séquentiellement dans chaque CODE group :
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
Remarque :
La fonction ROW_NUMBER() commence la numérotation à partir de 1 par défaut. Pour s'aligner sur le résultat souhaité, l'expression ROW_NUMBER() OVER (PARTITION BY ...) - 1 est utilisée pour décaler la numérotation de base 1 à base 0.
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!