La clause ORDER BY en SQL
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.
- 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
SELECT liste_colonnes
FROM nom_table
[WHERE condition]
[ORDER BY colonne1, colonne2, ...] [ASC | DESC];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;+----+---------+-----+---------+ | 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;+----+---------+-----+---------+ | 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;+----+---------+-----+---------+ | 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;+----+---------+-----+---------+ | 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;+----+---------+-----+---------+ | 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ête | Ordre de tri | Résultat |
|---|---|---|
ORDER BY Age | Âge croissant | 25, 25, 29, 30, 30, 32 |
ORDER BY Age DESC | Âge décroissant | 32, 30, 30, 29, 25, 25 |
ORDER BY Age, Nom DESC | Âge croissant, puis nom décroissant | 25 (Ismail, Dounia), 29, 30 (Omar, Mohamed), 32 |
ORDER BY Age DESC, Nom ASC | Âge décroissant, puis nom croissant | 32, 30 (Mohamed, Omar), 29, 25 (Dounia, Ismail) |
ORDER BY Salaire DESC | Salaire décroissant | 9000, 8000.40, 7500, 7000, 6000, 6000 |
Utilisation de ORDER BY
En utilisant la table Employes, écrivez les requêtes SQL pour :
- Afficher les employés triés par nom (ordre alphabétique).
- Afficher les employés triés par salaire du plus élevé au plus bas.
- Afficher les employés triés par âge croissant, puis par salaire décroissant.
- Tri par nom (ordre alphabétique) :
SELECT * FROM Employes ORDER BY Nom;Résultat : Dounia, Fatima, Ismail, Mohamed, Mostafa, Omar
- Tri par salaire décroissant :
SELECT * FROM Employes ORDER BY Salaire DESC;Résultat : 9000, 8000.40, 7500, 7000, 6000, 6000
- Tri par âge croissant puis salaire décroissant :
SELECT * FROM Employes ORDER BY Age ASC, Salaire DESC;Résultat :
- Âge 25 : Dounia (9000) puis Ismail (6000)
- Âge 29 : Fatima (6000)
- Âge 30 : Mohamed (8000.40) puis Omar (7500)
- Âge 32 : Mostafa (7000)
- 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.