Avec SQL ORDER BY, vous organisez vos résultats de recherche lors de requêtes de données selon vos besoins in­di­vi­duels dans l’ordre croissant ou dé­crois­sant. En triant les données en lignes et en colonnes dans votre tableau cible, vous améliorez la vue d’ensemble et la li­si­bi­lité. Vous optimisez et accélérez ainsi les analyses de données et les requêtes sur des ensembles de données complexes.

Qu’est-ce que SQL ORDER BY ?

Si vous souhaitez trier les données et les résultats d’ensembles de données simples ou complexes dans la table cible, utilisez la commande ORDER BY en SQL. Cette commande vous permet de définir pour vos données cibles un ordre croissant ou dé­crois­sant souhaité dans la requête de données. Grâce à ORDER BY, vous obtenez ainsi des résultats de requête triés de manière claire et fa­ci­le­ment lisible. Par défaut, la commande trie les données de la requête dans l’ordre croissant, c’est-à-dire de A à Z, ou de la plus petite à la plus grande valeur. Si vous préférez un autre ordre, indiquez le mot-clé fa­cul­ta­tif ASC (Ascend) pour ordre croissant ou DESC (Descend) pour ordre dé­crois­sant.

Vous pouvez définir au choix une seule ou plusieurs colonnes pour les résultats de sortie. En raison de sa pré­sen­ta­tion claire, ORDER BY joue un rôle important pour les requêtes de données ordonnées et rapides. La commande est par­ti­cu­liè­re­ment utilisée en com­bi­nai­son avec SQL SELECT, SQL WHERE ainsi que, selon les cas, avec d’autres opé­ra­teurs SQL ou des fonctions comme SQL GROUP BY.

Conseil

Vous souhaitez mieux com­prendre SQL, mais vous ne disposez que de peu de con­nais­sances préa­lables ? Notre in­tro­duc­tion à SQL avec exemples vous fa­ci­li­tera l’accès à ce langage de base de données très demandé.

Syntaxe de SQL ORDER BY

La syntaxe de la commande ORDER BY se présente comme suit :

SELECT colonneA, colonneB, ... ou *
FROM Table
ORDER BY colonneA, colonneB, ... (optionnel : ASC ou DESC)
sql
Note

Si vous indiquez une seule colonne après ORDER BY, vous obtenez une colonne avec des résultats triés. Si vous indiquez plusieurs colonnes, la clause trie d’abord tous les résultats selon la colonne A. En cas d’entrées iden­tiques dans dif­fé­rentes lignes, la clause classe les entrées selon la colonne B.

Vous pouvez étendre la syntaxe de SQL ORDER BY avec les opé­ra­teurs ou pa­ra­mètres souhaités. Avec une clause WHERE, vous dé­fi­nis­sez par exemple des con­di­tions sup­plé­men­taires pour limiter les résultats de la requête. La syntaxe en com­bi­nai­son avec WHERE se présente comme suit :

SELECT colonneA, colonneB, ... ou *
FROM Table
WHERE colonneA = 'condition de recherche'
ORDER BY colonneA, colonneB, ... (optionnel : ASC ou DESC)
sql

Ces pa­ra­mètres peuvent être utilisés :

  • SELECT : avec SQL SELECT, vous dé­ter­mi­nez quelles données vous souhaitez analyser. Indiquez un as­té­risque * si la requête s’applique à l’ensemble des données ou indiquez des noms de colonnes si vous souhaitez analyser des colonnes sé­lec­tion­nées.
  • FROM : définit la table à partir de laquelle vous in­ter­ro­gez les données.
  • WHERE : avec la clause op­tion­nelle SQL WHERE, vous dé­fi­nis­sez une condition de recherche spé­ci­fique selon laquelle vous triez les résultats. Des opé­ra­teurs de com­pa­rai­son sup­plé­men­taires comme = ou des opé­ra­teurs comme SQL LIKE ou SQL NOT peuvent être utilisés ici.
  • ORDER BY : détermine la valeur selon laquelle vous triez les résultats. Si vous n’ajoutez ni ASC ni DESC, le clas­se­ment se fait au­to­ma­ti­que­ment par ordre al­pha­bé­tique ou numérique dé­crois­sant.
Note

La clause ORDER BY classe les valeurs NULL au­to­ma­ti­que­ment ou selon l’ordre de tri choisi, selon la base de données. Dans SQLite, MySQL et SQL Server, la commande traite les valeurs NULL comme les valeurs les plus basses : dans l’ordre croissant, elles sont donc placées au début. Dans Oracle et Post­greSQL, les valeurs NULL sont con­si­dé­rées comme les valeurs les plus élevées : dans l’ordre croissant, elles se trouvent donc tout à la fin.

Ap­pli­ca­tions de ORDER BY

Les cas d’usage de SQL ORDER BY com­pren­nent :

  • Tri des in­for­ma­tions sur les produits par nom de produit, catégorie ou prix

  • Tri des tran­sac­tions par montant, date ou nom

  • Clas­se­ment des commandes par nombre ou par éva­lua­tion

  • Tri des employés par salaire, missions, per­for­mance ou dé­par­te­ment

  • Listage des stocks par nombre ou par nom

  • Tri des li­vrai­sons par code postal ou numéro de suivi

  • Tri des listes de clients par région ou par âge

Exemples pratiques de SQL `ORDER BY

Pour illustrer le fonc­tion­ne­ment de ORDER BY, vous trouverez ci-dessous trois exemples pratiques.

Trier les produits par prix

Pour trier les produits de la catégorie « Beauté » par ordre croissant de prix dans un tableau « Produits », utilisez FROM pour dé­ter­mi­ner la catégorie que vous souhaitez trier. Avec ORDER BY et ASC, vous dé­ter­mi­nez que vous voulez trier par ordre croissant de « Prix ». Procédez comme suit :

SELECT *
FROM Produits
WHERE Catégorie = 'Beauté'
ORDER BY Prix ASC;
sql

Filtrer les groupes de clients

Dans une table « Clients », vous souhaitez utiliser la condition de tri « Pays » pour trier tous les clients de France par ordre al­pha­bé­tique de nom. Pour trier par ordre croissant de A à Z, vous n’avez pas besoin d’ajouter ASC. Si vous souhaitez trier de Z à A, ajoutez DESC à la commande SQL ORDER BY :

SELECT *
FROM Clients
WHERE Pays = 'France'
ORDER BY Nom DESC;
sql

Trier avec plusieurs con­di­tions

Dans une table « Produits », vous souhaitez trier les entrées de la catégorie « Elec­tro­nique » par ordre al­pha­bé­tique croissant de quantité commandée. Si la quantité commandée est identique, vous souhaitez trier les commandes par région. La syntaxe est la suivante :

SELECT *
FROM Produits
WHERE Catégorie = 'Electronique'
ORDER BY Quantité commandée ASC, Région DESC;
sql

Al­ter­na­tives à la commande SQL ORDER BY

Il n’existe pas d’autre commande en SQL qui remplisse exac­te­ment la même fonction que ORDER BY. Parmi les commandes SQL qui sont cependant souvent utilisées en com­bi­nai­son avec SQL ORDER BY, on trouve SQL GROUP BY. Alors qu’avec GROUP BY vous regroupez les en­re­gis­tre­ments de colonnes par exemple par catégorie, vous pouvez en plus les ordonner avec ORDER BY.

Exemple : vous souhaitez regrouper la valeur des commandes des clients par pays, puis les trier par ordre croissant de la quantité moyenne de commandes à l’aide de la fonction d’agré­ga­tion SQL AVG, dont la syntaxe est la suivante :

SELECT Pays, AVG(Quantité commandée)
FROM Clients
WHERE Catégorie = 'Electronique'
GROUP BY Pays
ORDER BY AVG(quantité commandée) ASC;
sql

De plus, avec la clause SQL HAVING, vous pouvez filtrer les en­re­gis­tre­ments triés selon des critères de recherche et des con­di­tions définis. Avec LIMIT, vous pouvez également limiter la quantité de résultats à un nombre souhaité.

Aller au menu principal