MySQL MariaDB

Fonction de fenêtre de numéro de ligne MySQL

Fonction de fenêtre de numéro de ligne MySQL
Dans MySQL, une méthode ROW NUMBER() contient un numéro chronologique pour chaque ligne à l'intérieur de la partition. C'est juste une fonction de fenêtre quelconque. Le nombre de lignes commence à 1 avec le nombre de lignes dans la partition. Rappelez-vous, avant la version 8.0, MySQL n'autorise pas la fonction ROW NUMBER() cependant, il offre une variable de session qui aide à imiter cette fonctionnalité. Nous comprendrons plus sur la fonctionnalité MySQL ROW NUMBER() tout au long de ce guide et produirons un numéro consécutif pour chaque ligne de la collection de résultats. Dans MySQL, les méthodes ROW_NUMBER() sont utilisées avec les clauses suivantes :

Syntaxe:

>> SELECT col_name, ROW_NUMBER() OVER (PARTITION BY col_name, ORDER BY col_name) AS row_num FROM table_name;

Ouvrons le shell client en ligne de commande MySQL à partir des applications et tapez le mot de passe pour vous connecter.

Vous devez créer une nouvelle table ou utiliser la table par défaut pour commencer à travailler sur la fonction de numéro de ligne. Comme présenté dans l'image ci-dessous, nous avons une table "animaux" dans le schéma "données" avec quelques enregistrements dedans. Récupérons ses enregistrements à l'aide de l'instruction SELECT.

>> SÉLECTIONNER * À PARTIR des données.animaux;

Exemple 01 : ROW_NUMBER() Utilisation de la clause ORDER BY

Nous utiliserons le même tableau pour élaborer quelques exemples de la fonction de numéro de ligne. Nous prenons un exemple de la fonction ROW_NUMBER() suivie de Over(), en utilisant uniquement la clause ORDER BY. Nous avons récupéré tous les enregistrements en numérotant les lignes selon l'ordre de la colonne « Prix ». Nous avons donné le nom "row_num" à une colonne, qui stockera les numéros de la ligne. Essayons la commande ci-dessous pour le faire.

>> SELECT *, ROW_NUMBER() OVER ( ORDER BY Price ) AS row_num FROM data.animaux;

Lors de l'exécution de la requête ci-dessus, nous pouvons voir que les lignes ont été affectées de numéros selon l'ordre de tri de la colonne « Prix ». Vous pourriez penser que certains prix plus petits devraient figurer en haut de la colonne et qu'ils devraient être triés en fonction de cela. Mais la clause ORDER BY ne voit que le premier chiffre ou alphabet de la colonne pour trier les valeurs.

Exécutons la même requête suivie de la clause ORDER BY en utilisant l'ordre de tri de la colonne « Age ». La sortie sera donnée en fonction de la colonne « Âge ».

>> SELECT *, ROW_NUMBER() OVER ( ORDER BY Age ) AS row_num FROM data.animaux;

Exemple 02 : ROW_NUMBER() Utilisation de la clause PARTITION BY

Nous utiliserons la seule clause PARTITION BY dans la requête ROW_NUMBER() pour vérifier les résultats. Nous avons utilisé la requête SELECT pour récupérer les enregistrements suivis de ROW_NUMBER() et de la clause OVER, tout en partitionnant la table en fonction de la colonne « Couleur ». Exécutez la commande ci-dessous dans le shell de commande.

>> SELECT *, ROW_NUMBER() OVER ( PARTITION BY Color ) AS row_num FROM data.animaux;

Vous pouvez voir dans le résultat que la numérotation des lignes a été attribuée dans les partitions, selon l'ordre de tri des couleurs. Comme nous avons 4 valeurs pour la couleur "Noir" qui prend 4 lignes. C'est pourquoi il a des nombres à quatre rangées commençant de 1 à 4 et vice versa.

Essayez le même exemple, partitionné par la colonne « Sexe » cette fois. Comme nous le savons, nous n'avons que deux genres dans ce tableau, c'est pourquoi 2 partitions seront formées. Les femelles occupent 9 rangées, c'est pourquoi il a une numérotation de 1 à 9. Alors que les hommes ont 8 valeurs, c'est pourquoi il a 1 à 8.

>> SELECT *, ROW_NUMBER() OVER ( PARTITION BY Gender ) AS row_num FROM data.animaux;

Exemple 03 : ROW_NUMBER() Utilisation de PARTITION BY & ORDER BY

Nous avons fait les deux exemples ci-dessus dans la ligne de commande MySQL, il est maintenant temps de faire l'exemple ROW_NUMBER() dans MySQL Workbench 8.0. Alors, ouvrez MySQL Workbench 8.0 des applications. Connectez MySQL Workbench à la base de données racine de l'hôte local pour commencer à travailler.

Sur le côté gauche de MySQL Workbench, vous trouverez la barre de schéma, soufflez le navigateur. Dans cette barre de schéma, vous trouverez la liste des bases de données. Sous la liste des bases de données, vous aurez différentes tables et procédures stockées, comme vous pouvez le voir dans l'image ci-dessous. Nous avons différentes tables dans notre base de données 'data'. Nous allons ouvrir la table 'order1' à l'aide de la commande SELECT dans la zone de requête pour commencer à l'utiliser pour l'implémentation de la fonction ROW_NUMBER().

>> SÉLECTIONNER * À PARTIR des données.commande1;

Le tableau « order1 » a été affiché dans la vue en grille comme indiqué ci-dessous. Vous pouvez voir qu'il a 4 champs de colonne, id, Region, Status et OrderNo. Nous allons récupérer tous les enregistrements de cette table en utilisant les clauses ORDER BY et PARTITION BY, les deux en même temps.

Dans la zone de requête de MySQL Workbench 8.0, tapez la requête ci-dessous. La requête a été lancée avec la clause SELECT, récupérant tous les enregistrements suivis de la fonction ROW_NUMBER() avec la clause OVER. Après la clause OVER, nous avons spécifié la colonne "Status" suivie de l'instruction "PARTITION BY" pour diviser la table en partitions selon cette table. La clause ORDER BY a été utilisée pour ranger le tableau de manière décroissante selon la colonne "Région". Les numéros de ligne seront conservés dans la colonne "row_num". Appuyez sur l'icône flash pour exécuter cette commande.

Le résultat affiché ci-dessous sera affiché. Tout d'abord, le tableau a été séparé en deux parties selon les valeurs de la colonne « Status ». Après cela, il a été présenté dans l'ordre décroissant de la colonne « Région » et les partitions ont été attribuées avec les numéros de ligne.

Conclusion:

Enfin, nous avons terminé tous les exemples nécessaires en utilisant la fonction ROW_NUMBER() dans MySQL Workbench et MySQL Command-line Client Shell.

Tutoriel OpenTTD
OpenTTD est l'un des jeux de simulation d'entreprise les plus populaires. Dans ce jeu, vous devez créer une merveilleuse entreprise de transport. Cepe...
SuperTuxKart pour Linux
SuperTuxKart est un excellent titre conçu pour vous apporter l'expérience Mario Kart gratuitement sur votre système Linux. C'est assez stimulant et am...
Tutoriel Bataille pour Wesnoth
The Battle for Wesnoth est l'un des jeux de stratégie open source les plus populaires auxquels vous pouvez jouer en ce moment. Non seulement ce jeu es...