Tri des résultats
À l'aide de la commande SELECT, les résultats ont été renvoyés dans le même ordre que les enregistrements ont été ajoutés à la base de données. Il s'agit de l'ordre de tri par défaut. Dans cette section, nous verrons comment nous pouvons trier les résultats de nos requêtes. Le tri consiste simplement à réorganiser les résultats de notre requête d'une manière spécifiée. Le tri peut être effectué sur une seule colonne ou sur plusieurs colonnes. Cela peut être fait sur des nombres, des chaînes ainsi que des types de données de date.
Qu'est-ce que ORDER BY dans MySQL?
MySQL ORDER BY est utilisé en conjonction avec la requête SELECT pour trier les données de manière ordonnée. La clause MySQL ORDER BY est utilisée pour trier les ensembles de résultats de la requête dans l'ordre croissant ou décroissant.
SELECT statement… [WHERE condition | GROUP BY `field_name(s)` HAVING condition] ORDER BY `field_name(s)` [ASC | DESC];
ICI
- "Instruction SELECT…" est la requête de sélection régulière
- "|" représente des alternatives
- "[Condition WHERE | GROUP BY` nom (s) champ (s) `HAVING condition" est la condition facultative utilisée pour filtrer les ensembles de résultats de la requête.
- "ORDER BY" effectue le tri de l'ensemble de résultats de la requête
- "[ASC | DESC]" est le mot clé utilisé pour trier les ensembles de résultats par ordre croissant ou décroissant. Remarque ASC est utilisé par défaut.
Que sont les mots clés DESC et ASC?
|
|
Il est utilisé pour trier les résultats de la requête dans un style de haut en bas. |
Il est utilisé pour trier les résultats de la requête dans un style de bas en haut |
Lorsque vous travaillez sur des types de données de date, la date la plus ancienne est affichée en haut de la liste. |
. Lorsque vous travaillez sur des types de date, la dernière date est affichée en haut de la liste. |
Lorsque vous travaillez avec des types de données numériques, les valeurs les plus faibles sont affichées en haut de la liste. |
Lorsque vous travaillez avec des types de données numériques, les valeurs les plus élevées sont affichées en haut de l'ensemble de résultats de la requête. |
Lorsque vous travaillez avec des types de données chaîne, le jeu de résultats de la requête est trié à partir de ceux commençant par la lettre A jusqu'à la lettre Z. |
Lorsque vous travaillez avec des types de données chaîne, le jeu de résultats de la requête est trié à partir de ceux commençant par la lettre Z jusqu'à la lettre A. |
Les mots clés SQL DESC et ASC sont utilisés conjointement avec l'instruction SELECT et la clause MySQL ORDER BY.
Syntaxe DESC et ASC
Le mot-clé de tri SQL DESC a la syntaxe de base suivante.
SELECT {fieldName(s) | *} FROM tableName(s) [WHERE condition] ORDER BY fieldname(s) ASC /DESC [LIMIT N]
ICI
- SELECT {fieldName (s) | *} FROM tableName (s) est l'instruction contenant les champs et les tables à partir desquels obtenir le jeu de résultats.
- [Condition WHERE] est facultative mais peut être utilisée pour filtrer les données en fonction de la condition donnée.
- ORDER BY fieldname (s) est obligatoire et est le champ sur lequel le tri doit être effectué. Le mot clé MySQL DESC spécifie que le tri doit être dans l'ordre décroissant.
- [LIMIT] est facultatif mais peut être utilisé pour limiter le nombre de résultats renvoyés par l'ensemble de résultats de la requête.
Exemples:
Regardons maintenant un exemple pratique -
SELECT * FROM members;
L'exécution du script ci-dessus dans MySQL workbench sur myflixdb nous donne les résultats suivants indiqués ci-dessous.
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | This email address is being protected from spambots. You need JavaScript enabled to view it. |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
5 | Leonard Hofstadter | Male | NULL | Woodcrest | NULL | 845738767 | NULL |
6 | Sheldon Cooper | Male | NULL | Woodcrest | NULL | 976736763 | NULL |
7 | Rajesh Koothrappali | Male | NULL | Woodcrest | NULL | 938867763 | NULL |
8 | Leslie Winkle | Male | 14-02-1984 | Woodcrest | NULL | 987636553 | NULL |
9 | Howard Wolowitz | Male | 24-08-1981 | SouthPark | P.O. Box 4563 | 987786553 |
Supposons que le service marketing souhaite que les détails des membres soient classés par ordre décroissant de date de naissance. Cela les aidera à envoyer des vœux d'anniversaire en temps opportun. Nous pouvons obtenir ladite liste en exécutant une requête comme ci-dessous -
SELECT * FROM members ORDER BY date_of_birth DESC;
L'exécution du script ci-dessus dans MySQL workbench sur myflixdb nous donne les résultats suivants indiqués ci-dessous.
La même requête par ordre croissant
SELECT * FROM membres ORDER BY date_of_birth ASC
Remarque: les valeurs NULL signifient aucune valeur (pas zéro ou une chaîne vide). Observez la façon dont ils ont été triés.
Plus d'exemples
Considérons le script suivant qui répertorie tous les enregistrements de membres.
SELECT * FROM `members`;
L'exécution du script ci-dessus donne les résultats suivants indiqués ci-dessous.
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | This email address is being protected from spambots. You need JavaScript enabled to view it. |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
5 | Leonard Hofstadter | Male | NULL | Woodcrest | NULL | 845738767 | NULL |
6 | Sheldon Cooper | Male | NULL | Woodcrest | NULL | 976736763 | NULL |
7 | Rajesh Koothrappali | Male | NULL | Woodcrest | NULL | 938867763 | NULL |
8 | Leslie Winkle | Male | 14-02-1984 | Woodcrest | NULL | 987636553 | NULL |
9 | Howard Wolowitz | Male | 24-08-1981 | SouthPark | P.O. Box 4563 | 987786553 | NULL |
Supposons que nous souhaitons obtenir une liste qui trie l'ensemble de résultats de la requête à l'aide du champ de genre, nous utiliserions le script ci-dessous.
SELECT * FROM `members` ORDER BY `gender`;
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | This email address is being protected from spambots. You need JavaScript enabled to view it. |
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
5 | Leonard Hofstadter | Male | NULL | Woodcrest | NULL | 845738767 | NULL |
6 | Sheldon Cooper | Male | NULL | Woodcrest | NULL | 976736763 | NULL |
7 | Rajesh Koothrappali | Male | NULL | Woodcrest | NULL | 938867763 | NULL |
8 | Leslie Winkle | Male | 14-02-1984 | Woodcrest | NULL | 987636553 | NULL |
9 | Howard Wolowitz | Male | 24-08-1981 | SouthPark | P.O. Box 4563 | 987786553 | NULL |
Les membres "femmes" ont été affichés en premier, suivis des membres "hommes", car lorsque la clause ORDER BY DESC est utilisée sans spécifier le mot clé ASC ou MySQL DESC, par défaut, MySQL a trié l'ensemble de résultats de la requête dans un ordre croissant.
Regardons maintenant un exemple qui effectue le tri en utilisant deux colonnes ; la première est triée dans l' ordre croissant par défaut tandis que la deuxième colonne est triée dans l' ordre décroissant.
SELECT * FROM `members` ORDER BY `gender`,`date_of_birth` DESC;
L'exécution du script ci-dessus dans MySQL workbench sur myflixdb donne les résultats suivants.
La colonne de sexe a été triée par ordre croissant par défaut, tandis que la colonne de date de naissance a été triée explicitement par ordre décroissant
Pourquoi pouvons-nous utiliser DESC et ASC?
Supposons que nous souhaitons imprimer un historique des paiements pour un membre de la vidéothèque afin de répondre aux requêtes de la réception, ne serait-il pas plus logique que les paiements soient imprimés dans un ordre chronologique décroissant en commençant par le paiement récent au paiement précédent?
DESC en SQL est un mot-clé qui devient pratique dans de telles situations. Nous pouvons écrire une requête qui trie la liste par ordre décroissant en utilisant la date de paiement.
Supposons que le service marketing veuille obtenir une liste de films par catégorie que les membres peuvent utiliser pour décider quels films sont disponibles dans la bibliothèque lors de la location de films, ne serait-il pas plus logique de chercher à trier les noms et le titre des catégories de films par ordre croissant afin que les membres peuvent rechercher rapidement les informations de la liste?
Le mot-clé ASC est utile dans de telles situations; nous pouvons obtenir la liste des films triée par nom de catégorie et titre de film dans un ordre croissant.
Résumé
- Le tri des résultats de la requête consiste à réorganiser les lignes renvoyées par un jeu de résultats de requête par ordre croissant ou décroissant.
- Le mot-clé DESC en SQL est utilisé pour trier l'ensemble de résultats de la requête dans un ordre décroissant.
- Le mot clé ASC est utilisé pour trier l'ensemble de résultats de la requête dans un ordre croissant.
- DESC et ASC fonctionnent en conjonction avec le mot clé ORDER BY. Ils peuvent également être utilisés en combinaison avec d'autres mots-clés tels que la clause WHERE et LIMIT
- La valeur par défaut pour ORDER BY lorsque rien n'a été explicitement spécifié est ASC.