Ce tutoriel explique la clause MySQL ORDER BY et son utilisation avec les options ASC et DESC. Nous allons décrire cette instruction MySQL à l’aide d’exemples simples.
1. Syntaxe de la clause ORDER BY
2. ORDER BY W/O ASC or DESC
3. ORDER BY DESC
4. ORDER BY Relative Position
5. ORDER BY Two Fields ASC & DESC
Examinons maintenant chacune des sections une par une.
Clause ORDER BY MySQL
La commande SELECT MySQL ne renvoie pas un ensemble de résultats triés par défaut. Par conséquent, pour trier le résultat, vous devez ajouter la clause ORDER BY dans la requête SELECT. Nous pouvons obtenir les résultats suivants en utilisant la clause ORDER BY :
- Faire un tri des enregistrements par un seul/plusieurs champs
- Trier les lignes par des colonnes distinctes dans un ordre croissant (ASC) ou décroissant (DESC).
Les éléments suivants illustrent la syntaxe de la clause ORDER BY :
Syntaxe
# MySQL ORDER BY ClauseSELECT field1, field2,...FROM target_tableORDER BY field1 , field2 ,...
La clause ORDER BY effectue par défaut un tri par ordre croissant. Le terme ASC est un acronyme pour croissant tandis que DESC signifie descendant. Pour DESC, vous devez le mentionner dans votre requête SELECT.
Veuillez noter que vous pouvez même spécifier une expression avec le ORDER BY dans MySQL. De plus, les deux options ASC et DESC sont facultatives pour cette instruction.
Voici quelques exemples d’exercices pour vous entraîner.
Exemples de la clause ORDER BY de MySQL
Vérifions comment utiliser la clause ORDER BY avec les requêtes SELECT de MySQL.
Utiliser order by sans l’option asc/desc
Pour faire la démonstration, créons d’abord une table nommée Sample et alimentons-la avec quelques données de test.
CREATE TABLE Sample ( sample_id int NOT NULL, sample_name VARCHAR(20), vendor_name VARCHAR(20), sample_size INT );
Puis, insérons quelques données factices pour nos tests.
Après cela, nous devons vérifier le contenu de notre table Sample. Voir ci-dessous.
SELECT *FROM Sample;
Sa sortie est la suivante:
Maintenant, nous allons exercer la clause ORDER BY sur le fichier « vendor_name ». Et, nous observerons le jeu de résultats reçu de la base de données MySQL:
SELECT *FROM SampleORDER BY vendor_name;
Vous obtiendrez un résultat montrant la sortie ci-dessous:
Vous pouvez évaluer à partir du jeu de résultats ci-dessus que le tri a eu lieu dans l’ordre ascendant par défaut.
Tri dans l’ordre descendant
Dans cet exemple, nous allons démontrer la clause ORDER BY pour trier dans l’ordre descendant. Pour cela, nous devrons la spécifier explicitement.
Voici l’instruction MySQL pour trier par ordre décroissant:
SELECT *FROM SampleORDER BY vendor_name DESC;
La sortie de SELECT est:
Tri par champ sur une position relative
Il est possible d’utiliser la clause ORDER BY de MySQL pour trier par un champ sur une position RELATIVE.
Lorsque nous spécifions des noms de colonnes dans la requête SELECT, le premier champ est en position un, le second sur deux, et ainsi de suite. De plus, nous pouvons valider ce fait à l’aide d’un exemple.
Voici une instruction SELECT qui affiche les champs et les trie par une position relative.
SELECT # pos_1 pos_2 pos_3 pos_4 sample_id, sample_name, vendor_name, sample_sizeFROM SampleORDER BY 4 DESC;
Voici le jeu de résultats que vous obtenez après avoir exécuté la commande ci-dessus :
Vous pouvez voir que MySQL a trié par le champ sample_size qui correspond à la quatrième colonne.
Utiliser ORDER BY pour trier sur deux colonnes
Nous avions mentionné précédemment que vous pouviez utiliser ORDER BY sur un ou plusieurs champs. Dans ce cas, MySQL traite le premier champ comme primaire et le second comme secondaire. Par conséquent, il trie d’abord le primaire et ensuite le second.
Donc, dans cet exemple, nous allons démontrer ORDER BY sur deux colonnes, un champ en ASC, et un autre DESC. En outre, nous devons insérer plus d’enregistrements pour montrer que la deuxième colonne est triée aussi.
Vous pouvez ignorer l’instruction INSERT donnée au début ci-dessus et utiliser celle ci-dessous.
Maintenant, nous avons quelques lignes avec les mêmes noms de fournisseurs mais des tailles d’échantillons variées. Et, nous allons maintenant trier en fonction des champs nom_fournisseur (primaire) et taille_échantillon (secondaire).
SELECT sample_id, sample_name, vendor_name, sample_sizeFROM SampleORDER BY vendor_name ASC, sample_size DESC;
Cette instruction MySQL produit ce résultat:
Vous pouvez voir que toutes les valeurs du champ primaire ont été triées dans l’ordre croissant. Et, il est également évident dans la sortie que le tri (en DESC) a eu lieu sur le second également.
Maintenant, découvrons quel serait le résultat, si nous avions trié uniquement sur le nom du fournisseur.
SELECT sample_id, sample_name, vendor_name, sample_sizeFROM SampleORDER BY vendor_name ASC;
Cette commande donnera comme résultat :
Nous pouvons voir dans le résultat ci-dessus que les lignes appartenant à Google et Twitter n’ont pas trié sur leurs tailles d’échantillon.
Nous espérons qu’après avoir conclu ce tutoriel, vous devriez vous sentir à l’aise dans l’utilisation de la clause ORDER BY de MySQL. Cependant, vous pouvez vous exercer davantage avec des exemples pour gagner en confiance.
Aussi, pour apprendre SQL de manière approfondie, lisez notre tutoriel MySQL pas à pas.