Trier les données - ORDER BY

22 Sep 2019 22 Sep 2019 11640 vues ESSADDOUKI Mostafa 5 min de lecture

La clause ORDER BY en SQL

Définition

L'instruction ORDER BY dans SQL est utilisée pour trier les données extraites par ordre croissant ou décroissant selon une ou plusieurs colonnes.

Règles importantes
  • Par défaut, ORDER BY trie les données par ordre croissant.
  • Vous pouvez utiliser le mot-clé DESC pour trier les données par ordre décroissant.
  • Vous pouvez utiliser le mot-clé ASC pour trier par ordre croissant (par défaut).

Syntaxe

   
ORDER BY SQL
SELECT liste_colonnes
FROM nom_table 
[WHERE condition] 
[ORDER BY colonne1, colonne2, ...] [ASC | DESC];
Attention !

Vous pouvez utiliser plusieurs colonnes dans la clause ORDER BY. Assurez-vous que les colonnes que vous utilisez pour trier ces enregistrements doivent figurer dans la liste des colonnes (liste_colonnes).

Lorsque vous utilisez ORDER BY sur plusieurs colonnes, le tri commence par la première colonne. Si deux ou plusieurs enregistrements ont la même valeur dans cette colonne, alors le tri passe à la colonne suivante, et ainsi de suite.

Table d'exemple

Pendant ce cours, nous allons travailler sur la table suivante :

Table - Employes

+----+---------+-----+---------+
| Id | Nom     | Age | Salaire |
+----+---------+-----+---------+
|  1 | Ismail  |  25 | 6000.00 |
|  2 | Mohamed |  30 | 8000.40 |
|  3 | Fatima  |  29 | 6000.00 |
|  4 | Dounia  |  25 | 9000.00 |
|  5 | Omar    |  30 | 7500.00 |
|  6 | Mostafa |  32 | 7000.00 |
+----+---------+-----+---------+

Exemples d'utilisation

  Exemple n°1

Trier les employés par âge croissant (ordre par défaut).

SELECT * FROM Employes ORDER BY Age;
Résultat
+----+---------+-----+---------+
| Id | Nom     | Age | Salaire |
+----+---------+-----+---------+
|  1 | Ismail  |  25 | 6000.00 |
|  4 | Dounia  |  25 | 9000.00 |
|  3 | Fatima  |  29 | 6000.00 |
|  2 | Mohamed |  30 | 8000.40 |
|  5 | Omar    |  30 | 7500.00 |
|  6 | Mostafa |  32 | 7000.00 |
+----+---------+-----+---------+

Les employés sont triés par âge du plus jeune au plus âgé. Notez que Ismail et Dounia (25 ans) sont classés ensemble, puis Fatima (29 ans), puis Mohamed et Omar (30 ans), et enfin Mostafa (32 ans).

  Exemple n°2

Trier les employés par âge décroissant (du plus âgé au plus jeune).

SELECT * FROM Employes ORDER BY Age DESC;
Résultat
+----+---------+-----+---------+
| Id | Nom     | Age | Salaire |
+----+---------+-----+---------+
|  6 | Mostafa |  32 | 7000.00 |
|  2 | Mohamed |  30 | 8000.40 |
|  5 | Omar    |  30 | 7500.00 |
|  3 | Fatima  |  29 | 6000.00 |
|  1 | Ismail  |  25 | 6000.00 |
|  4 | Dounia  |  25 | 9000.00 |
+----+---------+-----+---------+

  Exemple n°3

Trier les employés par âge croissant, puis par nom décroissant pour les âges identiques.

SELECT * FROM Employes ORDER BY Age, Nom DESC;
Résultat
+----+---------+-----+---------+
| Id | Nom     | Age | Salaire |
+----+---------+-----+---------+
|  1 | Ismail  |  25 | 6000.00 |
|  4 | Dounia  |  25 | 9000.00 |
|  3 | Fatima  |  29 | 6000.00 |
|  5 | Omar    |  30 | 7500.00 |
|  2 | Mohamed |  30 | 8000.40 |
|  6 | Mostafa |  32 | 7000.00 |
+----+---------+-----+---------+

Explication :

  • D'abord, tri par âge croissant (25, 29, 30, 32).
  • Pour les employés de 25 ans, tri par nom décroissant (ordre alphabétique inverse). Normalement, l'ordre alphabétique croissant serait Dounia puis Ismail. Ici, en ordre décroissant, Ismail (I) vient avant Dounia (D).
  • Pour les employés de 30 ans, tri par nom décroissant : Omar (O) vient avant Mohamed (M).

  Exemple n°4

Trier les employés par âge décroissant, puis par nom croissant pour les âges identiques.

SELECT * FROM Employes ORDER BY Age DESC, Nom ASC;
Résultat
+----+---------+-----+---------+
| Id | Nom     | Age | Salaire |
+----+---------+-----+---------+
|  6 | Mostafa |  32 | 7000.00 |
|  2 | Mohamed |  30 | 8000.40 |
|  5 | Omar    |  30 | 7500.00 |
|  3 | Fatima  |  29 | 6000.00 |
|  4 | Dounia  |  25 | 9000.00 |
|  1 | Ismail  |  25 | 6000.00 |
+----+---------+-----+---------+

Explication :

  • D'abord, tri par âge décroissant (32, 30, 29, 25).
  • Pour les employés de 30 ans, tri par nom croissant : Mohamed (M) avant Omar (O).
  • Pour les employés de 25 ans, tri par nom croissant : Dounia (D) avant Ismail (I).

  Exemple n°5

Trier les employés par salaire décroissant.

SELECT * FROM Employes ORDER BY Salaire DESC;
Résultat
+----+---------+-----+---------+
| Id | Nom     | Age | Salaire |
+----+---------+-----+---------+
|  4 | Dounia  |  25 | 9000.00 |
|  2 | Mohamed |  30 | 8000.40 |
|  5 | Omar    |  30 | 7500.00 |
|  6 | Mostafa |  32 | 7000.00 |
|  1 | Ismail  |  25 | 6000.00 |
|  3 | Fatima  |  29 | 6000.00 |
+----+---------+-----+---------+

Récapitulatif des tris

RequêteOrdre de triRésultat
ORDER BY AgeÂge croissant25, 25, 29, 30, 30, 32
ORDER BY Age DESCÂge décroissant32, 30, 30, 29, 25, 25
ORDER BY Age, Nom DESCÂge croissant, puis nom décroissant25 (Ismail, Dounia), 29, 30 (Omar, Mohamed), 32
ORDER BY Age DESC, Nom ASCÂge décroissant, puis nom croissant32, 30 (Mohamed, Omar), 29, 25 (Dounia, Ismail)
ORDER BY Salaire DESCSalaire décroissant9000, 8000.40, 7500, 7000, 6000, 6000
 Exercice pratique

Utilisation de ORDER BY

 Niveau : Débutant

En utilisant la table Employes, écrivez les requêtes SQL pour :

  1. Afficher les employés triés par nom (ordre alphabétique).
  2. Afficher les employés triés par salaire du plus élevé au plus bas.
  3. Afficher les employés triés par âge croissant, puis par salaire décroissant.
Points clés à retenir
  • ORDER BY trie les résultats d'une requête.
  • ASC = ordre croissant (valeur par défaut).
  • DESC = ordre décroissant.
  • On peut trier sur plusieurs colonnes : le tri se fait d'abord sur la première colonne, puis sur la suivante pour les valeurs égales.
  • Les colonnes utilisées dans ORDER BY doivent figurer dans la liste des colonnes sélectionnées.
  • ORDER BY s'utilise après WHERE et avant LIMIT (si présent).
  • Les valeurs NULL sont considérées comme les plus petites en ordre croissant (elles apparaissent en premier avec ASC, en dernier avec DESC).

Discussion (0)

Soyez le premier à laisser un commentaire !

Laisser un commentaire

Votre commentaire sera visible après modération.