English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Dans ce tutoriel, vous apprendrez à trier les données retournées par une requête SQL SELECT.
Généralement, lorsque vous utilisez une instruction SELECT pour obtenir des données à partir d'une table, les lignes du jeu de résultats n'ont pas d'ordre spécifique. Si vous souhaitez trier le jeu de résultats dans un ordre spécifique, vous pouvez spécifier la clause ORDER BY à la fin de l'instruction, qui indique à quel programme le jeu de résultats doit être trié. L'ordre de tri par défaut est croissant.
La clause ORDER BY est utilisée pour trier les données retournées par la requête en ordre croissant ou décroissant. La syntaxe de base de cette clause peut être donnée de la manière suivante :
SELECT column_list FROM table_name ORDER BY column_name ASC|DESC;
Ici,column_listest la table de base de données dont la valeur doit être obtenue.nom,âge,paysetc. colonnes/du champnometcolumn_nameIl s'agit du nom de la colonne à trier. Laissez-nous voir quelques exemples pour illustrer son fonctionnement réel.
}La commande SQL suivante extrait deConsidérons que nous avons une base de données avec
+--------+--------------+------------+--------+---------+ Cette fois, vous obtiendrez le jeu de résultats suivant : +--------+--------------+------------+--------+---------+ | 1 00 | NULL | 2001-05-01 | 5Ethan Hunt | 4 | | 2 Rick Deckard | 2002-07-15 | 65Tony Montana | 1 | | 3 emp_id | emp_name | hire_date | salary | dept_id | 2005-10-18 | 8Ethan Hunt | 5 | | 4 Sarah Connor | 2007-01-03 | 72Tony Montana | 3 | | 5 00 | 2008-06-24 | 56Martin Blank | +--------+--------------+------------+--------+---------+
Tri par colonne uniqueLa commande SQL suivante extrait deemployésTous les employés du tableau sont retournés et classés paremp_name
SELECT * Résultat trié par ordre décroissant sur la colonne (salary). Classer les enregistrements de la base de données par ordre croissant sur la colonne
ORDER BY emp_name ASC;
SELECT * Résultat trié par ordre décroissant sur la colonne (salary). Vous pouvez omettre l'option ASC et utiliser la syntaxe suivante. Elle retourne le même jeu de résultats que la dernière instruction, car la commande SQL par défaut est triée par ordre croissant :
ORDER BY emp_name;
+--------+--------------+------------+--------+---------+ Cette fois, vous obtiendrez le jeu de résultats suivant : +--------+--------------+------------+--------+---------+ | 1 00 | NULL | 2001-05-01 | 5Ethan Hunt | 4 | | 5 00 | 2008-06-24 | 56Martin Blank | | 4 Sarah Connor | 2007-01-03 | 72Tony Montana | 3 | | 3 emp_id | emp_name | hire_date | salary | dept_id | 2005-10-18 | 8Ethan Hunt | 5 | | 2 Rick Deckard | 2002-07-15 | 65Tony Montana | 1 | +--------+--------------+------------+--------+---------+
En exécutant la commande précédente, vous obtiendrez le résultat suivant :De la même manière, vous pouvez utiliser l'option DESC pour effectuer un tri décroissant. La commande suivante triera par ordre décroissant :Salaire
SELECT * Résultat trié par ordre décroissant sur la colonne (salary). FROM employees
ORDER BY salary DESC;
+--------+--------------+------------+--------+---------+ Cette fois, vous obtiendrez le jeu de résultats suivant : +--------+--------------+------------+--------+---------+ | 3 emp_id | emp_name | hire_date | salary | dept_id | 2005-10-18 | 8Ethan Hunt | 5 | | 4 Sarah Connor | 2007-01-03 | 72Tony Montana | 3 | | 2 Rick Deckard | 2002-07-15 | 65Tony Montana | 1 | | 5 00 | 2008-06-24 | 56Martin Blank | | 1 00 | NULL | 2001-05-01 | 5Ethan Hunt | 4 | +--------+--------------+------------+--------+---------+
Tri par plusieurs colonnes
Vous pouvez également spécifier plusieurs colonnes pour le tri. Cependant, à moins que le tableau ne contienne des valeurs répétées, les modifications du jeu de résultats ne seront pas visibles. Bonne, voyons :Pour mieux comprendre le tri par plusieurs colonnes, supposons que nous ayons une base de données avec un nomParticipants
+----+------------+------------+-------------+--------+ id | first_name | last_name | birth_date | gender | +----+------------+------------+-------------+--------+ | 1 | Peter | Parker | 1998-03-04 | M | | 2 Harry | Potter | 2001-08-30 | M | | 3 | Peter | Pan | 2004-09-19 | M | | 4 Alice | Kingsleigh | 1999-07-02 F | | 5 | John | Connor | 2002-01-15 | M | +----+------------+------------+-------------+--------+
du tableau, qui contient les enregistrements suivants :
Si vous examinez attentivement le tableau, vous remarquerez que nous avons quelques valeurs répétées. Cependant, les participants formés Peter Parker et Peter Pan ont des noms complets différents, mais les prénoms sont identiques.first_nameClasser les enregistrements de la base de données parTri.
SELECT * FROM trainees En exécutant la commande suivante, le résultat suivant sera obtenu :
ORDER BY first_name;
+----+------------+------------+-------------+--------+ id | first_name | last_name | birth_date | gender | +----+------------+------------+-------------+--------+ | 4 Alice | Kingsleigh | 1999-07-02 F | | 2 Harry | Potter | 2001-08-30 | M | | 5 | John | Connor | 2002-01-15 | M | | 1 | Peter | Parker | 1998-03-04 | M | | 3 | Peter | Pan | 2004-09-19 | M | +----+------------+------------+-------------+--------+
En exécutant cette instruction, le résultat suivant sera obtenu :first_nameetlast_nameClasser les enregistrements de la base de données parTri.
SELECT * FROM trainees ORDER BY first_name, last_name;
+----+------------+------------+-------------+--------+ id | first_name | last_name | birth_date | gender | +----+------------+------------+-------------+--------+ | 4 Alice | Kingsleigh | 1999-07-02 F | | 2 Harry | Potter | 2001-08-30 | M | | 5 | John | Connor | 2002-01-15 | M | | 3 | Peter | Pan | 2004-09-19 | M | | 1 | Peter | Parker | 1998-03-04 | M | +----+------------+------------+-------------+--------+
Avez-vous remarqué la différence entre le jeu de résultats précédent et le jeu de résultats actuel-Cette fois, l'enregistrement de l'étudiant "Peter Parker" suit immédiatement celui de "Peter Pan".
Comme les noms de deux entraînés sont tous "Peter", dans les deux entraînéslast_nameLa colonne est triée au second niveau, c'est pourquoi l'enregistrement de l'entraîné "Peter Parker" suit celui de "Peter Pan".
Attention :Lorsque plusieurs colonnes d'ordre sont spécifiées, le jeu de résultats est d'abord trié par la première colonne, puis par la deuxième colonne de cette liste ordonnée, et ainsi de suite.