Udostępnij za pośrednictwem


Sortowanie wierszy w kolejności według

ORDER BY klauzula sortowania wyniki kwerendy przez jedną lub więcej kolumn 8,060 bajtów.Aby uzyskać więcej informacji na temat ORDER BY klauzula rozmiar maksymalny, zobacz Klauzula ORDER BY (Transact-SQL).

Począwszy od SQL Server 2005, SQL Server umożliwia określanie sortowania kolumn z tabel w klauzula FROM, nie są określone na liście SELECT.Nazwy kolumn w klauzula ORDER BY muszą odpowiadać na liście wybierz kolumna lub kolumna tabela w klauzula FROM, bez żadnych niejasności.kolumna noszą nazwy alias na liście SELECT, nazwa alias może służyć w klauzula ORDER BY.Podobnie jeśli tabela nazwy są wygładzone w klauzula FROM, tylko nazwy alias mogą być używane w celu zakwalifikowania ich kolumn w klauzula ORDER BY.

Sortowanie można rosnąco (ASC) lub malejąco (opis).Jeśli nie zostanie określony, przyjmowana jest wartość ASC.

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

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

Jeśli więcej niż jedną kolumna o nazwie w klauzula ORDER BY, sortuje są zagnieżdżone.Poniższa instrukcja sortuje wiersze w Production.Product tabela, najpierw według produktu podkategorii w porządku malejącym i następnie ListPrice rosnąco w ramach każdej podkategorii produktu.

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

Dokładne wyniki ORDER BY klauzula zależą od sortowanie kolumn są uporządkowane.Aby uzyskać więcej informacji, zobacz Praca z sortowania.Dla char, varchar, nchar, i nvarchar kolumna, można określić wykonać operację zamówienia zgodnie z sortowanie różni się od sortowania kolumna zdefiniowane w tabela lub widoku.Można określić nazwę sortowanie systemu Windows lub nazwa sortowania SQL.Na przykład LastName kolumny Person.Person tabela w AdventureWorks2008R2 bazy danych zdefiniowano sortowanie Latin1_General, ale w skrypcie poniżej, kolumna jest zwracany w porządku rosnącym, przy użyciu Traditional_Spanish sortowanie.

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

Nie można użyć kolumny, które mają ORDER BY text, ntext, image, lub xml typów danych.Ponadto podkwerendy, zagregowanych i wyrażenia stała są niedozwolone w liście ORDER BY.Jednakże nazwa określona przez użytkownika można na liście wybierz dla agregatów lub wyrażeń.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 wynik tylko dla najbardziej peryferyjnych instrukcja SELECT kwerendy.Na przykład rozważmy następującą definicję widoku:

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

Następnie kwerendy widoku:

SELECT * FROM TopView;       

Chociaż definicji widoku zawiera klauzulę ORDER BY, że klauzula ORDER BY jest używana tylko do określenia wierszy zwracanych przez klauzula TOP.Podczas badania, samego widoku SQL Server nie gwarantuje wyniki zostaną zamówione, chyba że zostanie jednoznacznie, jak pokazano w następującej kwerendzie:

SELECT * FROM TopView       
ORDER BY LastName;       

Zobacz także

Koncepcje