Ricerca…


Osservazioni

Lo scopo della clausola ORDER BY è di ordinare i dati restituiti da una query.

È importante notare che l' ordine delle righe restituite da una query non è definito a meno che non ci sia una clausola ORDER BY.

Vedere la documentazione MSDN per i dettagli completi della clausola ORDER BY: https://msdn.microsoft.com/en-us/library/ms188385.aspx

Semplice clausola ORDER BY

Utilizzando la tabella Impiegati , di seguito è riportato un esempio per restituire le colonne Id, FName e LName nell'ordine (ascendente) LName:

SELECT Id, FName, LName FROM Employees
ORDER BY LName

Ritorna:

Id FName LName
2 John Johnson
1 Giacomo fabbro
4 Johnathon fabbro
3 Michael Williams

Per ordinare in ordine discendente aggiungere la parola chiave DESC dopo il parametro field, ad es. La stessa query nell'ordine decrescente LName è:

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

ORDINA DA più campi

È possibile specificare più campi per la clausola ORDER BY , in ordine ascendente o DESCending.

Ad esempio, utilizzando la http://stackoverflow.com/documentation/sql/280/example-databases/1207/item-sales-table#t=201607211314066434211 tabella, possiamo restituire una query che ordina da SaleDate in ordine ascendente, e Quantità in ordine decrescente.

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

Si noti che la parola chiave ASC è facoltativa e i risultati vengono ordinati in ordine crescente di un dato campo per impostazione predefinita.

Ordina con logica complessa

Se vogliamo ordinare i dati in modo diverso per gruppo, possiamo aggiungere una sintassi CASE a ORDER BY . In questo esempio, vogliamo ordinare ai dipendenti del Dipartimento 1 il cognome e i dipendenti del Dipartimento 2 per stipendio.

Id FName LName Numero di telefono ManagerID DepartmentID Stipendio Data di assunzione
1 Giacomo fabbro 1234567890 NULLO 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 fabbro 1212121212 2 1 500 24-07-2016
5 Sam sassone 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

Ordinazione personalizzata

Se si desidera ordinare in base a una colonna utilizzando qualcosa di diverso dall'ordinamento alfabetico / numerico, è possibile utilizzare il case per specificare l'ordine desiderato.

order by Group resi di order by Group :

Gruppo Contare
Non ritirato 6
Pensionato 4
Totale 10

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

Gruppo Contare
Totale 10
Pensionato 4
Non ritirato 6


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow