MySQL ORDER BY

Résumé : dans ce tutoriel, vous apprendrez à trier un ensemble de résultats en utilisant la clause MySQL ORDER BY.

Introduction à la clause MySQL ORDER BY

Lorsque vous utilisez l’instruction SELECT pour interroger les données d’une table, l’ensemble de résultats n’est pas trié. Cela signifie que les lignes du jeu de résultats peuvent être dans n’importe quel ordre.

Pour trier le jeu de résultats, vous ajoutez la clause ORDER BY à l’instruction SELECT. Voici une illustration de la syntaxe de la clause ORDER BY:

Dans cette syntaxe, vous spécifiez la ou les colonnes que vous souhaitez trier après la clause ORDER BY.

La ASC signifie ascendant et la DESC signifie descendant. Vous utilisez ASC pour trier l’ensemble des résultats par ordre croissant et DESC pour trier l’ensemble des résultats par ordre décroissant.

Cette ORDER BY clause trie l’ensemble des résultats par ordre croissant :

ORDER BY column1 ASC;
Code language: SQL (Structured Query Language) (sql)

Et cette ORDER BY clause trie l’ensemble des résultats par ordre décroissant :

ORDER BY column1 DESC;
Code language: SQL (Structured Query Language) (sql)

Par défaut, la clause ORDER BY utilise ASC si vous ne spécifiez explicitement aucune option.

Par conséquent, les clauses suivantes sont équivalentes :

ORDER BY column1 ASC;
Code language: SQL (Structured Query Language) (sql)

et

ORDER BY column1;
Code language: SQL (Structured Query Language) (sql)

Si vous voulez trier le jeu de résultats par plusieurs colonnes, vous spécifiez une liste de colonnes séparées par des virgules dans la clause ORDER BY :

ORDER BY column1, column2;
Code language: SQL (Structured Query Language) (sql)

Il est possible de trier le résultat par une colonne en ordre croissant, puis par une autre colonne en ordre décroissant :

ORDER BY column1 ASC, column2 DESC;
Code language: SQL (Structured Query Language) (sql)

Dans ce cas, la clause ORDER BY:

  • D’abord, trier le jeu de résultats par les valeurs de la column1 dans l’ordre croissant.
  • Puis, triez l’ensemble de résultats triés par les valeurs de la column2 dans l’ordre décroissant. Notez que l’ordre des valeurs dans la column1 ne changera pas dans cette étape, seul l’ordre des valeurs dans la column2 change.

Notez que la clause ORDER BY est toujours évaluée après la clause FROM et SELECT.

MySQL ORDER BY exemples

Nous allons utiliser la table customers de la base de données exemple pour la démonstration.

A) Utilisation de la clause ORDER BY de MySQL pour trier les valeurs dans une colonne exemple

.

La requête suivante utilise la clause ORDER BY pour trier les clients selon les valeurs de la colonne contactLastName dans l’ordre croissant.

SELECTcontactLastname,contactFirstnameFROMcustomersORDER BYcontactLastname;
Code language: SQL (Structured Query Language) (sql)

Essayez-le

Si vous voulez trier les clients par le nom de famille dans l’ordre décroissant, vous utilisez la DESC après la colonne contactLastname dans la clause ORDER BY comme indiqué dans la requête suivante :

SELECTcontactLastname,contactFirstnameFROMcustomersORDER BYcontactLastname DESC;
Code language: SQL (Structured Query Language) (sql)

Essayez-le

B) Utilisation de la clause ORDER BY de MySQL. pour trier des valeurs dans plusieurs colonnes exemple

Si vous voulez trier les clients par le nom de famille dans l’ordre décroissant puis par le prénom dans l’ordre croissant, vous spécifiez à la fois DESC et ASC dans la colonne correspondante comme suit :

SELECTcontactLastname,contactFirstnameFROMcustomersORDER BYcontactLastname DESC,contactFirstname ASC;
Code language: SQL (Structured Query Language) (sql)

Essayez-le

Dans cet exemple, la clause ORDER BY trie d’abord le jeu de résultats par le nom de famille dans l’ordre décroissant, puis trie le jeu de résultats trié par le prénom dans l’ordre croissant pour produire le jeu de résultats final.

C) Utilisation de MySQL ORDER BY pour trier un ensemble de résultats par une expression exemple

Voir la table suivante orderdetails de la base de données exemple.

La requête suivante sélectionne les articles de ligne de commande dans la table orderdetails. Elle calcule le sous-total pour chaque poste de ligne et trie le jeu de résultats en fonction du sous-total.

SELECT orderNumber, orderlinenumber, quantityOrdered * priceEachFROM orderdetailsORDER BY quantityOrdered * priceEach DESC;
Code language: SQL (Structured Query Language) (sql)

Essayez-le

Pour rendre la requête plus lisible, vous pouvez attribuer à l’expression de la clause SELECT un alias de colonne et utiliser cet alias de colonne dans la clause ORDER BY comme le montre la requête suivante :

SELECT orderNumber, orderLineNumber, quantityOrdered * priceEach AS subtotalFROM orderdetailsORDER BY subtotal DESC;
Code language: SQL (Structured Query Language) (sql)

Try It Out

Dans cet exemple, nous avons utilisé subtotal comme alias de colonne pour l’expression quantityOrdered * priceEach et trié le jeu de résultats par l’alias subtotal.

L’alias de colonne peut être utilisé dans la clause ORDER BY car la clause SELECT est évaluée avant la clause ORDER BY. Au moment où la clause ORDER BY est évaluée, l’alias de la colonne est accessible.

Utilisation de MySQL ORDER BY pour trier les données à l’aide d’une liste personnalisée

La clause ORDER BY permet de trier les données à l’aide d’une liste personnalisée en utilisant la fonction FIELD().

Voyez le tableau suivant orders de la base de données exemple.

Supposons que vous souhaitiez trier les commandes client en fonction de leurs statuts dans l’ordre suivant :

  • En cours de traitement
  • En attente
  • Annulé
  • Résolu
  • Discuté
  • Envoyé

Pour ce faire, vous pouvez utiliser la fonction FIELD() pour faire correspondre chaque statut de commande à un numéro et trier le résultat par le résultat de la fonction FIELD() :

Essayez-le

L’expression suivante :

FIELD(status, 'In Process', 'On Hold', 'Cancelled', 'Resolved', 'Disputed', 'Shipped');
Code language: SQL (Structured Query Language) (sql)

renvoie l’indice du status dans la liste 'In Process', 'On Hold', 'Cancelled', 'Resolved', 'Disputed', 'Shipped'.

Par exemple, si le status est In Process, la fonction renverra 1. Si le status est On Hold, la fonction retournera 2, et ainsi de suite.

Dans ce tutoriel, vous avez appris à utiliser la clause MySQL ORDER BY pour trier les lignes du jeu de résultats par une ou plusieurs colonnes dans un ordre croissant ou décroissant.

  • Ce tutoriel vous a-t-il été utile ?
  • OuiNon

.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *