Nous savons que l’instruction SQL SELECT renvoie les lignes sans ordre particulier. Avec l’aide de la clause ORDER BY, nous pouvons ordonner les rangs dans un ordre souhaité. La clause ORDER BY est utilisée pour trier les enregistrements retournés dans un ordre. En utilisant la clause ORDER BY, nous pouvons trier le résultat dans un ordre croissant ou décroissant. Cette clause peut également être utilisée avec plusieurs colonnes.
Syntaxe ORDER BY
SELECT column_name1, column_name2, column_name3.... FROM table_nameWHERE Condition ORDER BY column_name1, column_name2, .... (ASC OR DESC);
Ici, ASC est utilisé pour le tri par ordre croissant et DESC pour l’ordre décroissant.
Exemple de clause ORDER BY SQL
Disons que nous avons une table « STUDENT » avec les enregistrements suivants.
+---------+----------+-----+-----------+----------+| ROLL_NO | NAME | AGE | BRANCH | CITY |+---------+----------+-----+-----------+----------+| 10001 | Kate | 22 | CSE | Mumbai || 10002 | Richard | 21 | ECE | Delhi || 10003 | Rick | 33 | ME | Chennai || 10004 | Peter | 26 | CSE | Delhi || 10005 | Steve | 22 | CSE | Noida || 10006 | Mark | 22 | ECE | Jaipur || 10007 | Brad | 23 | ME | Rampur |+---------+----------+-----+-----------+----------+
L’instruction SQL suivante récupérera tous les enregistrements de la table « STUDENT » et les lignes retournées seront dans l’ordre croissant de l’âge de l’étudiant.
SELECT * FROM STUDENTORDER BY AGE;
Note : L’ordre de tri par défaut est ascendant, les lignes seront donc triées en fonction de la colonne « AGE », même si nous n’avons pas utilisé le mot clé ASC dans la clause order by. On peut donc dire que la requête suivante est identique à la requête ci-dessus et qu’elle récupèrerait le même résultat.
SELECT * FROM STUDENTORDER BY AGE ASC;
Résultat:
+---------+----------+-----+-----------+----------+| ROLL_NO | NAME | AGE | BRANCH | CITY |+---------+----------+-----+-----------+----------+| 10002 | Richard | 21 | ECE | Delhi || 10001 | Kate | 22 | CSE | Mumbai || 10005 | Steve | 22 | CSE | Noida || 10006 | Mark | 22 | ECE | Jaipur || 10007 | Brad | 23 | ME | Rampur || 10004 | Peter | 26 | CSE | Delhi || 10003 | Rick | 33 | ME | Chennai |+---------+----------+-----+-----------+----------+
SQL ORDER BY DESC example
Table : STUDENT
+---------+----------+-----+-----------+----------+| ROLL_NO | NAME | AGE | BRANCH | CITY |+---------+----------+-----+-----------+----------+| 10001 | Kate | 22 | CSE | Mumbai || 10002 | Richard | 21 | ECE | Delhi || 10003 | Rick | 33 | ME | Chennai || 10004 | Peter | 26 | CSE | Delhi || 10005 | Steve | 22 | CSE | Noida || 10006 | Mark | 22 | ECE | Jaipur || 10007 | Brad | 23 | ME | Rampur |+---------+----------+-----+-----------+----------+
L’instruction SQL suivante va récupérer les noms des étudiants dans la table « STUDENT » et les noms retournés seront triés par ordre décroissant (nous avons utilisé DESC pour ordre décroissant dans la clause ORDER BY).
SELECT NAME FROM STUDENTORDER BY NAME DESC;
Résultat:
+----------+| NAME | +----------+| Steve | | Rick | | Richard | | Peter | | Mark | | Kate | | Brad | +----------+
Comme vous pouvez le voir, nous avons obtenu une liste de noms d’étudiants triés dans l’ordre décroissant.
SQL ORDER BY Multiple Columns
Dans les exemples ci-dessus, nous avons effectué le tri en fonction d’une seule colonne. Cependant, nous pouvons utiliser plusieurs colonnes dans la clause ORDER BY.
Lorsque plusieurs colonnes sont utilisées dans ORDER BY, les lignes seront d’abord triées en fonction de la première colonne, puis de la deuxième colonne. Prenons un exemple pour comprendre cela.
Table : EMPLOYEE
EMP_ID EMP_NAME COUNTRY CITY PINCODE------ -------- ------- ---- -------1001 Paul India Noida 2013101005 Raul India Agra 2831261002 Ajeet India Noida 2013011003 Jon India Agra 2820081006 David India Agra 2820051004 Chetan India Noida 201313
Tri des lignes en fonction de la ville d’abord, puis par code pin au sein de chaque ville:
SELECT * FROM EMPLOYEEORDER BY CITY, PINCODE;
Résultat:
Comme vous pouvez le voir, les lignes sont triées par VILLE, puis au sein de la ville triées par code pin.
EMP_ID EMP_NAME COUNTRY CITY PINCODE------ -------- ------- ---- -------1006 David India Agra 2820051003 Jon India Agra 2820081005 Raul India Agra 2831261002 Ajeet India Noida 2013011001 Paul India Noida 2013101004 Chetan India Noida 201313
Tri des lignes en fonction de la ville d’abord dans l’ordre croissant, puis par code pin dans l’ordre décroissant au sein de chaque ville:
SELECT * FROM EMPLOYEEORDER BY CITY ASC, PINCODE DESC;
Résultat:
Comme vous pouvez le voir, les lignes sont triées par VILLE dans l’ordre croissant, puis au sein de la ville triées dans l’ordre inverse par code pin.
EMP_ID EMP_NAME COUNTRY CITY PINCODE------ -------- ------- ---- -------1005 Raul India Agra 2831261003 Jon India Agra 2820081006 David India Agra 2820051004 Chetan India Noida 2013131001 Paul India Noida 2013101002 Ajeet India Noida 201301