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 Numéro de ligne () contient un numéro chronologique pour chaque ligne à l'intérieur de la partition. C'est juste une fonction de fenêtre d'une sorte. La figure des lignes commence à 1 avec la figure des lignes dans la partition. N'oubliez pas, avant la version 8.0, MySQL n'autorise pas la fonction Numéro de ligne () Cependant, il propose 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 produire 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:
  • La clause sur () sera utilisée à l'intérieur.
  • Les ordres par clause organisent le résultat en fonction de l'ordre de tri de la colonne mentionnée.

Syntaxe:

>> sélectionnez col_name, row_number () over (partition by col_name, ordre par col_name) comme row_num from table_name;

Laissez-nous ouvrir le shell client de ligne de commande MySQL à partir des applications et saisissez 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 un tableau «Animaux» dans le schéma «données» avec certains enregistrements dedans. Reprenons ses enregistrements en utilisant l'instruction SELECT.

>> Sélectionner * à partir des données.animaux;

Exemple 01: row_number () Utilisation de l'ordre par clause

Nous utiliserons le même tableau pour développer quelques exemples de la fonction de numéro de ligne. Nous prenons un exemple de la fonction ROW_NUMBER () suivi de sur (), tout en utilisant uniquement la clause Order by. Nous avons récupéré tous les enregistrements tout en comptant les lignes selon l'ordre de «prix» de la colonne. 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) comme ROW_NUM à partir des données.animaux;

Lors de l'exécution de la requête ci-dessus, nous pouvons voir que les lignes ont été attribuées avec des chiffres en fonction de l'ordre de tri de la colonne «prix». Vous pourriez penser que certains prix plus petits devraient être en haut de la colonne et cela devrait trier en fonction de cela. Mais la clause Order By ne voit que le premier chiffre ou l'alphabet de la colonne pour trier les valeurs.

Exécutons la même requête suivie de la clause Order Order by tout 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) comme ROW_NUM à partir des données.animaux;

Exemple 02: row_number () Utilisation de partition par clause

Nous utiliserons la seule clause de partition par la requête ROW_NUMBER () pour vérifier les résultats. Nous avons utilisé la requête de sélection pour récupérer les enregistrements suivis de Row_number () et sur la clause, tandis que le partitionnement du tableau selon la colonne "Couleur". Exécutez la commande ci-dessous annexée dans le shell de commande.

>> sélectionner *, row_number () over (partition by colore) as row_num à partir de données.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 numéros de quatre rangées à partir de 1 à 4 et vice versa.

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

>> sélectionner *, row_number () over (partition by sexe) as row_num à partir de données.animaux;

Exemple 03: row_number () Utilisation de partition par & order par

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 le MySQL Workbench 8.0. Alors, ouvrez le MySQL Workbench 8.0 à partir des applications. Connectez le MySQL Workbench avec la base de données root hôte locale pour commencer à travailler.

Sur le côté gauche du MySQL Workbench, vous trouverez la barre de schéma, soufflerez le navigateur. Dans cette barre de schéma, vous trouverez la liste des bases de données. Dans 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 «données». Nous ouvrirons le tableau 'Order1' en utilisant la commande SELECT dans la zone de requête pour commencer à l'utiliser pour la fonction ROW_NUMBER ().

>> Sélectionner * à partir des données.Ordre1;

Le tableau «Order1» a été affiché dans la vue de la grille comme indiqué ci-dessous. Vous pouvez voir qu'il a 4 champs de colonne, ID, région, statut et OrderNO. Nous allons récupérer tous les enregistrements de ce tableau tout en utilisant l'ordre par la clause de l'ordre par et de la clause, 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é que le «statut» de la colonne est passé par la déclaration «Partition par» pour diviser le tableau en partitions selon ce tableau. La clause Order By a été utilisée pour organiser 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 ci-dessous sera affiché. Tout d'abord, le tableau a été séparé en deux parties selon les valeurs de la colonne «Statut». Après cela, il a été présenté dans l'ordre décroissant de la «région» de la colonne 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 Shell Client Shell.