MySQL Comment obtenir l'ordre des numéros de lignes

Ces instructions expliquent comment afficher l'ordre / le rang des numéros de lignes pour un jeu de résultats obtenu en exécutant une requête SQL. Un exemple avec une explication pas à pas est fourni.

Passons en exemple.

Commençons par créer une table employee dans notre base de données.

Requête 1.1

mysql> create table employee (id smallint (5),
nom varchar (15), salaire smallint (5));

Ensuite, insérez les enregistrements dans la table des employés.

Requête 1.2

mysql> Insérer dans les valeurs des employés (1, 'jon', 1000);
mysql> Insérer dans les valeurs des employés (2, 'darvin', 3500);
mysql> Insérer dans les valeurs des employés (3, 'krik', 500);
mysql> Insérer dans les valeurs des employés (4, 'rook', 1500);
mysql> Insérer dans les valeurs des employés (5, 'alex', 100);

Maintenant, affichez tous les enregistrements de la table employee.

Requête 1.3

mysql> select * from employee; + ------ + -------- + -------- + | id | nom | salaire | + ------ + -------- + -------- + | 1 | jon | 1000 | | 2 | darvin | 3500 | | 3 | krik | 500 | | 4 | tour | 1500 | | 5 | alex | 100 | + ------ + -------- + -------- + 5 lignes dans le jeu (0.00 sec)

Maintenant, récupérons tous les enregistrements de la table employee triés par salaire.

Requête 1.4

mysql> sélectionnez * dans l'ordre des employés par salaire; + ------ + -------- + -------- + | id | nom | salaire | + ------ + -------- + -------- + | 5 | alex | 100 | | 3 | krik | 500 | | 1 | jon | 1000 | | 4 | tour | 1500 | | 2 | darvin | 3500 | + ------ + -------- + -------- + 5 lignes dans le jeu (0.00 sec) 

Maintenant, nous voulons vraiment avoir une colonne supplémentaire qui va de 1 (première ligne) à la dernière ligne. C'est pour que nous puissions afficher l'ordre des lignes dans la table. Voici la requête.

mysql> set @row_num = 0;
SELECT @row_num: = @row_num + 1 comme numéro de ligne, id, nom, salaire FROM employee
ORDER BY salaire;

+ ------------ + ------ + -------- + -------- + | numéro_ligne | id | nom | salaire | + ------------ + ------ + -------- + -------- + | 1 | 5 | alex | 100 | | 2 | 3 | krik | 500 | | 3 | 1 | jon | 1000 | | 4 | 4 | tour | 1500 | | 5 | 2 | darvin | 3500 | + ------------ + ------ + -------- + -------- + 5 lignes dans l'ensemble (0.00 sec) 

Maintenant, vous pouvez voir la colonne supplémentaire (numéro_ligne) qui montre l'ordre des lignes. Ceci est très utile lors de l'affichage des enregistrements.

Voyons un peu plus en détail comment la requête 1.4 ci-dessus fonctionne pour obtenir l'ordre des numéros de lignes.

set @row_num = 0;

Cette utilise @row_num comme variable définie par l'utilisateur pour contenir le nombre de lignes et se voit attribuer une valeur 0.

SELECT @row_num: = @row_num + 1 en tant que row_number

Ici, on augmente la variable @row_num par 1, chaque fois que le identifiant les changements de colonne et nous maintenons la valeur qu'il avait dans la ligne précédente. Cela va continuer à incrémenter la variable @row_num jusqu'à ce qu'il atteigne la dernière rangée identifiant colonne, en utilisant 'numéro_ligne' pour alias de colonne.