Udostępnij za pośrednictwem


Klauzula ORDER BY (Transact-SQL)

Określa kolejność sortowania na kolumnach zwracane w instrukcjaSELECT.ORDER BY klauzula nie jest prawidłowa w widoki, funkcje wbudowane, pochodnych tabel i podkwerend, chyba że określono także u góry.

Ostrzeżenie

Kiedy ORDER BY jest używana w definicji widoku, śródwierszowej funkcjapochodnych tabelalub podzapytanie, klauzula jest używana tylko do określenia wierszy zwracanych przez klauzulaTOP.ORDER BY klauzula nie gwarantuje zamówione wyniki kwerendy są następujące konstrukcje, ORDER BY również określono w samej kwerendzie.

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

Składnia

[ ORDER BY 
    {
    order_by_expression 
  [ COLLATE collation_name ] 
  [ ASC | DESC ] 
    } [ ,...n ] 
] 

Argumenty

  • order_by_expression
    Określa kolumna , dla której do sortowania.Sortuj kolumna można określić jako kolumnalub nazwęaliaslub nieujemna liczba całkowita, reprezentującej pozycję nazwy ani alias na liście select. Nie może być liczbą całkowitą z zakresu określonego podczas order_by_expression pojawia się w klasyfikacji funkcja.Sortuj kolumna można umieścić na wyrażenie, ale, gdy baza danych jest w SQL Server (90) trybu zgodności wyrażenie nie można rozpoznać stała.Nazwy kolumn i aliasów można kwalifikowaną nazwę tabela lub widoku.W SQL Server, kwalifikowanej nazwy kolumna i aliasy rozwiązane do kolumn wymienionych w klauzulaFROM.Jeśli order_by_expression jest nie kwalifikuje, wartość musi być unikatowa wśród wszystkich kolumn na liście w instrukcjaSELECT.

    Można określić wiele sortowanie kolumn.Kolejność sortowania kolumn w kolejności według klauzula definiuje organizacji sortowane zestaw wyników.

    ORDER BY klauzula może zawierać elementy, które nie są wyświetlane na liście select.Jeżeli określono wartość SELECT DISTINCT, lub jeśli instrukcja zawiera Grupuj według klauzulalub jeśli instrukcja SELECT zawiera UNION operator, sortowanie kolumn muszą jednakże pojawiać się na liście wyboru.

    Ponadto kiedy instrukcja SELECT zawiera UNION operator, nazwy kolumna lub aliasów kolumna musi być określony w pierwszym wybierz listę.

    Ostrzeżenie

    ntext, text, image, lub xmlnie można użyć kolumny w kolejności według klauzula.

  • SORTOWANIE {collation_name}
    Określa, że operacji ORDER BY powinny być przeprowadzane zgodnie z sortowanie , określone w collation_namei zgodnie z sortowanie kolumna , jak zdefiniowano w tabela lub widoku.collation_namemoże być nazwa sortowanie systemu Windows lub nazwasortowanie SQL. Aby uzyskać więcej informacji, zobacz Ustawienia sortowania w konfiguracji i Przy użyciu ustawień sortowania programu SQL Server.SORTUJ ma zastosowanie tylko do kolumn char, varchar, nchar, i nvarchar typów danych.

  • ASC
    Określa, że wartości w określonej kolumna powinny być sortowane w kolejności rosnącej lub od wartości najniższej do najwyższej wartości.ASC jest sortowanie domyślne.

  • DESC
    Określa, że wartości w określonej kolumna powinny być sortowane w kolejności malejącej, od wartości najwyższej do najniższej wartości.

Uwagi

Wartości Null są traktowane jako najniższych możliwych wartości.

Nie jest ograniczona do liczby elementów w kolejności według klauzula.Jest jednak dopuszczalne 8,060 bajty rozmiaru wierszy pośrednich worktables potrzebnych dla operacji sortowania.Ogranicza całkowity rozmiar kolumn określona w kolejności według klauzula.

Wraz z SELECT...W instrukcja Wstaw wiersze z innego źródło, ORDER BY klauzula nie gwarantuje, że wiersze są wstawiane w podanej kolejności.

Przykłady

Poniższe przykłady pokazują, zamawiania, zestaw wyników.

Zamawianie przez liczbowe ProductID kolumna.Domyślnym jest rosnąco.

USE AdventureWorks2008R2;
GO
SELECT ProductID, Name FROM Production.Product
WHERE Name LIKE 'Lock Washer%'
ORDER BY ProductID ;

Zamawianie przez liczbowe ProductID kolumna w kolejności malejącej.

SELECT ProductID, Name FROM Production.Product
WHERE Name LIKE 'Lock Washer%'
ORDER BY ProductID DESC;

Zamawianie przez Name kolumna.Należy zauważyć, że znaki są sortowane alfabetycznie, nie numerycznie.Oznacza to, że 10 sortuje przed 2.

SELECT ProductID, Name FROM Production.Product
WHERE Name LIKE 'Lock Washer%'
ORDER BY Name ASC ;

Porządkowanie według dwóch kolumn.Ta kwerenda najpierw sortowane w kolejnooci rosnącej według FirstName kolumnasortuje w kolejności według malejącej LastName kolumna.

SELECT LastName, FirstName FROM Person.Person
WHERE LastName LIKE 'R%'
ORDER BY FirstName ASC, LastName DESC ;