Par défaut, il n'est pas garanti que les lignes d'une table de base de données ou d'un ensemble de résultats de requête soient dans un ordre spécifique. Pour organiser les lignes de sortie dans une séquence significative, nous utilisons la clause ORDER BY.
La clause ORDER BY est ajoutée à la fin d'une instruction SELECT pour trier l'ensemble de résultats en fonction d'une ou plusieurs colonnes.
SELECT colonne1, colonne2, ...
FROM nom_table
ORDER BY colonne1 [ASC|DESC], colonne2 [ASC|DESC], ...;
colonne1, colonne2, ... : Les colonnes par lesquelles vous souhaitez trier.ASC : Trie les données par ordre croissant (du plus petit au plus grand, de A à Z). C'est le choix par défaut.DESC : Trie les données par ordre décroissant (du plus grand au plus petit, de Z à A).Pour trier par une seule colonne, spécifiez simplement son nom après le mot-clé ORDER BY.
Cette requête récupère tous les acteurs et les trie par ordre alphabétique de leur nom (last_name).
SELECT first_name, last_name
FROM actor
ORDER BY last_name;
Si vous souhaitez les trier dans l'ordre alphabétique inverse :
SELECT first_name, last_name
FROM actor
ORDER BY last_name DESC;
Vous pouvez trier par plusieurs colonnes en les listant séparées par des virgules. La base de données trie d'abord par la première colonne et, s'il y a des valeurs identiques dans cette colonne, elle trie ces doublons par la deuxième colonne, et ainsi de suite.
C'est utile lorsque plusieurs acteurs partagent le même nom de famille.
SELECT first_name, last_name
FROM actor
ORDER BY last_name, first_name; -- D'abord par nom, puis par prénom en cas d'égalité
Vous pouvez trier non seulement par des colonnes brutes, mais aussi par des expressions. SQL évalue d'abord l'expression pour chaque ligne (par exemple un résultat numérique, textuel ou booléen), puis ORDER BY trie les lignes en utilisant ces valeurs évaluées comme clé de tri.
Trier les films par durée de location en semaines (rental_duration / 7) :
SELECT title, rental_duration
FROM film
ORDER BY rental_duration / 7 DESC;
Trier les acteurs sans tenir compte de la casse sur le nom complet :
SELECT first_name, last_name
FROM actor
ORDER BY LOWER(first_name || ' ' || last_name);
Placer d'abord les films classés 'G' :
SELECT title, rating
FROM film
ORDER BY (rating = 'G') DESC, title;
Le tri booléen peut varier selon les dialectes SQL. Pour un comportement entièrement portable, utilisez CASE :
SELECT title, rating
FROM film
ORDER BY CASE WHEN rating = 'G' THEN 0 ELSE 1 END, title;
Dans la plupart des dialectes SQL, vous pouvez également trier par l'alias d'une colonne ou par sa position numérique dans la liste SELECT.
SELECT first_name || ' ' || last_name AS full_name
FROM actor
ORDER BY full_name;
-- Trie par la deuxième colonne (last_name)
SELECT first_name, last_name
FROM actor
ORDER BY 2;
Points clés de cette leçon :
ORDER BY pour trier les lignes de votre ensemble de résultats.ASC (par défaut) trie par ordre croissant ; DESC trie par ordre décroissant.Dans la leçon suivante, nous découvrirons les fonctions d'agrégation, qui nous permettent d'effectuer des calculs sur des ensembles de données.