Sorting Rows with ORDER BY

ORDER BY klauzula sortuje kwerendę wyniki według jednego lub więcej kolumn do 8,060 bajtów.Aby uzyskać więcej informacji na temat ORDER BY klauzula rozmiar maksymalny zobacz ORDER BY Clause (Transact-SQL).

Starting with Microsoft SQL Server 2005, SQL Server allows specifying ordering columns from tables in the FROM clause that are not specified in the SELECT list.Nazwy kolumn w klauzula ORDER BY muszą odpowiadać kolumna na liście SELECT lub kolumna tabela w klauzula FROM bez żadnych ambiguities.Jeśli kolumna noszą nazwy alias na liście SELECT, tylko nazwa alias można używać w klauzula ORDER BY.Podobnie jeśli tabela nazwy alias w klauzula FROM, tylko nazwy alias może służyć do kwalifikowania ich kolumn w klauzula ORDER BY.

Sortowanie może być (ASC) rosnącej lub malejącej (DESC).Jeśli żadna z nich nie zostanie określony, przyjmowana jest wartość ASC.

Następująca kwerenda zwraca wyniki uporządkowane według kolejności rosnącej ProductID:

USE AdventureWorks;
GO
SELECT ProductID, ProductLine, ProductModelID
FROM Production.Product
ORDER BY ProductID

Jeśli nosi więcej niż jedną kolumna w klauzula ORDER BY, sortuje są zagnieżdżone.Poniższa instrukcja sortuje wiersze w Production.Product Tabela, najpierw według podkategorii produktu w kolejności malejącej, a następnie według ListPrice rosnąco w ramach każdej podkategorii produktu.

USE AdventureWorks;
GO
SELECT ProductID, ProductSubcategoryID, ListPrice
FROM Production.Product
ORDER BY ProductSubcategoryID DESC, ListPrice

Dokładne wyniki klauzulę ORDER BY, zależą od sortowanie kolumn są uporządkowane.Aby uzyskać więcej informacji zobaczPraca z ustawień sortowania.Dla char, varchar, nchar, a nvarchar kolumna, można określić, że można wykonać operacji ORDER BY, zgodnie z sortowanie, które różni się od sortowanie kolumna, jak zdefiniowano w tabela lub widoku. Można określić nazwę sortowanie systemu Windows lub nazwę sortowanie programu SQL.Na przykład LastName Kolumna Person.Contact Tabela w AdventureWorks Baza danych jest zdefiniowana z sortowanie Latin1_General, ale w poniższym skrypcie kolumny jest zwracany w rosnącej kolejności za pomocą sortowanie Traditional_Spanish.

USE AdventureWorks;
GO
SELECT LastName FROM Person.Contact
ORDER BY LastName
COLLATE Traditional_Spanish_ci_ai ASC
GO

ORDER BY nie można używać na kolumny, które mają text, ntext, image, lub xml typy danych. Ponadto podkwerend zagregowanych i wyrażeń stałych nie są dozwolone w liście ORDER BY.Jednak nazwę określone przez użytkownika można użyć na liście select zagregowanych lub wyrażenia.Na przykład:

SELECT Color, AVG (ListPrice) AS 'average list price'
FROM Production.Product
GROUP BY Color
ORDER BY 'average list price'

ORDER BY gwarantuje sortowane wyniki tylko dla najbardziej zewnętrznych instrukcja SELECT kwerendy.Na przykład rozważmy następującą definicję widoku:

CREATE VIEW TopView AS 
SELECT TOP 50 PERCENT * FROM Person.Contact       
ORDER BY LastName       

Następnie wykonać kwerendę w widoku:

SELECT * FROM TopView       

W definicji widoku zawiera klauzulę ORDER BY, że klauzula ORDER BY jest używany tylko do określenia wierszy zwracanych przez klauzulę TOP.Podczas badania, widok SQL Server nie gwarantuje wyniki zostaną zamówione, chyba że zostanie to jawnie, jak pokazano na następującej kwerendy:

SELECT * FROM TopView       
ORDER BY LastName       

See Also

Concepts