Recherche…


Remarques

La clause ORDER BY a pour objet de trier les données renvoyées par une requête.

Il est important de noter que l' ordre des lignes renvoyées par une requête n'est pas défini, sauf s'il existe une clause ORDER BY.

Voir la documentation MSDN pour plus de détails sur la clause ORDER BY: https://msdn.microsoft.com/en-us/library/ms188385.aspx

Clause ORDER BY simple

À l'aide de la table Employees , vous trouverez ci-dessous un exemple pour renvoyer les colonnes Id, FName et LName dans l'ordre LName (croissant):

SELECT Id, FName, LName FROM Employees
ORDER BY LName

Résultats:

Id FName LName
2 John Johnson
1 James Forgeron
4 Johnathon Forgeron
3 Michael Williams

Pour trier par ordre décroissant, ajoutez le mot-clé DESC après le paramètre de champ, par exemple la même requête dans l'ordre décroissant LName est:

SELECT Id, FName, LName FROM Employees
ORDER BY LName DESC

COMMANDER PAR plusieurs champs

Plusieurs champs peuvent être spécifiés pour la clause ORDER BY , dans l'ordre ASCending ou DESCending.

Par exemple, à l'aide de la table http://stackoverflow.com/documentation/sql/280/example-databases/1207/item-sales-table#t=201607211314066434211 , nous pouvons renvoyer une requête qui trie par SaleDate dans l'ordre croissant, et Quantité en ordre décroissant.

SELECT ItemId, SaleDate, Quantity
FROM [Item Sales]
ORDER BY SaleDate ASC, Quantity DESC

Notez que le mot-clé ASC est facultatif et que les résultats sont triés dans l'ordre croissant d'un champ donné par défaut.

ORDRE BY avec logique complexe

Si nous voulons commander les données différemment pour chaque groupe, nous pouvons ajouter une syntaxe CASE à la commande ORDER BY . Dans cet exemple, nous voulons commander les employés du département 1 par nom de famille et les employés du département 2 par salaire.

Id FName LName Numéro de téléphone ManagerId DépartementId Un salaire Date d'embauche
1 James Forgeron 1234567890 NUL 1 1000 01-01-2002
2 John Johnson 2468101214 1 1 400 23-03-2005
3 Michael Williams 1357911131 1 2 600 12-05-2009
4 Johnathon Forgeron 1212121212 2 1 500 24-07-2016
5 Sam saxon 1372141312 2 2 400 25-03-2015
The following query will provide the required results:
SELECT Id, FName, LName, Salary FROM Employees
ORDER BY Case When DepartmentId = 1 then LName else Salary end

Commande personnalisée

Si vous souhaitez passer une commande en utilisant une colonne autre que l'ordre alphabétique / numérique, vous pouvez utiliser la case pour spécifier l'ordre souhaité.

order by Group retourne:

Groupe Compter
Non retiré 6
Retraité 4
Total dix

order by case group when 'Total' then 1 when 'Retired' then 2 else 3 end retours order by case group when 'Total' then 1 when 'Retired' then 2 else 3 end :

Groupe Compter
Total dix
Retraité 4
Non retiré 6


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow