logo

Fonction MySQL ROW_NUMBER()

La fonction ROW_NUMBER() dans MySQL est utilisée pour renvoyer le nombre séquentiel pour chaque ligne de sa partition. C'est une sorte de fonction de fenêtre. Le numéro de ligne commence de 1 jusqu'au nombre de lignes présentes dans la partition.

Il est à noter que MySQL ne prend pas en charge la fonction ROW_NUMBER() avant la version 8.0, mais fournit un variable de session cela nous permet d'émuler cette fonction.

Syntaxe

Voici la syntaxe de base pour utiliser ROW_NUMBER() dans MySQL :

aligner une image en CSS
 ROW_NUMBER() OVER ( ) 

Démontrons-le à l'aide d'un exemple .

Tout d'abord, nous allons créer une table nommée ' Personne ' en utilisant la déclaration ci-dessous :

 CREATE TABLE Person ( Name varchar(45) NOT NULL, Product varchar(45) DEFAULT NULL, Country varchar(25) DEFAULT NULL, Year int NOT NULL ); 

Ensuite, il est nécessaire d'ajouter des valeurs à ce tableau. Exécutez l'instruction ci-dessous :

 INSERT INTO Person(Name, Product, Country, Year) VALUES ('Stephen', 'Computer', 'USA', 2015), ('Joseph', 'Laptop', 'India', 2016), ('John', 'TV', 'USA', 2016), ('Donald', 'Laptop', 'England', 2015), ('Joseph', 'Mobile', 'India', 2015), ('Peter', 'Mouse', 'England', 2016); 

Ensuite, exécutez l'instruction SELECT pour afficher les enregistrements :

télécharger autocad 2019 anglais mediafire
 mysql> SELECT * FROM Person; 

Nous obtiendrons le résultat, comme indiqué ci-dessous :

initialisation de la liste Python
Fonction MySQL ROW_NUMBER()

Maintenant, nous pouvons utiliser la fonction ROW_NUMBER() pour attribuer un numéro de séquence à chaque enregistrement à l'aide de l'instruction ci-dessous :

 SELECT *, ROW_NUMBER() OVER(PARTITION BY Year) AS row_num FROM Person; 

Cela donnera le résultat suivant :

Fonction MySQL ROW_NUMBER()

Encore une fois, nous pouvons utiliser la fonction ROW_NUMBER() pour attribuer un numéro de séquence à chaque enregistrement d'une partition en utilisant l'instruction ci-dessous :

 SELECT *, ROW_NUMBER() OVER(PARTITION BY Year) AS row_num FROM Person; 

Il donnera le résultat ci-dessous où deux partitions trouvées en fonction de l'année (2015 et 2016).

classe abstraite vs interface
Fonction MySQL ROW_NUMBER()

MySQL ROW_NUMBER() Utilisation d'une variable de session

Nous pouvons émuler la fonction ROW_NUMBER() pour ajouter un numéro de ligne par ordre croissant à l'aide de la variable de session.

Exécutez l'instruction ci-dessous qui ajoute le numéro de ligne pour chaque ligne, qui commence à 1 :

 SET @row_number = 0; SELECT Name, Product, Year, Country, (@row_number:=@row_number + 1) AS row_num FROM Person ORDER BY Country; 

Dans cette instruction, nous avons d'abord spécifié la variable de session @numéro_ligne indiqué par @prfix et définissons sa valeur 0. Ensuite, nous avons sélectionné les données de la table Person et augmenté la valeur de la variable @row_number de un pour chaque ligne.

Après l’exécution réussie des requêtes, nous obtiendrons le résultat ci-dessous :

Fonction MySQL ROW_NUMBER()

Encore une fois, nous allons utiliser une variable de session comme table et la joindre à la table source en utilisant l'instruction suivante :

 SELECT (@row_number:=@row_number + 1) AS row_num, Name, Country, Year FROM Person, (SELECT @row_number:=0) AS temp ORDER BY Year; 

Nous obtiendrons le résultat comme ci-dessous :

Fonction MySQL ROW_NUMBER()