Seřazení výsledků

Dokončeno

V logickém pořadí zpracování dotazů je funkce ORDER BY poslední fází příkazu SELECT, která se má provést. FUNKCE ORDER BY umožňuje řídit řazení řádků při jejich vrácení z SQL Serveru do klientské aplikace. SQL Server nezaručuje fyzické pořadí řádků v tabulce a jediný způsob, jak řídit pořadí, ve které se řádky vrátí klientovi, je klauzule ORDER BY. Toto chování je konzistentní s relační teorii.

Použití klauzule ORDER BY

Chcete-li sql Serveru sdělit, aby vrátil výsledky dotazu v určitém pořadí, přidejte klauzuli ORDER BY v tomto formuláři:

SELECT<select_list>
FROM <table_source>
ORDER BY <order_by_list> [ASC|DESC];

ORDER BY může mít v seznamu několik typů prvků:

  • Sloupce podle názvu Můžete zadat názvy sloupců, podle kterých se mají výsledky seřadit. Výsledky se vrátí v pořadí od prvního sloupce a potom se podřadí podle každého dalšího sloupce v pořadí.
  • Aliasy sloupců Vzhledem k tomu, že funkce ORDER BY je zpracována po klauzuli SELECT, má přístup k aliasům definovaným v seznamu SELECT.
  • Sloupce podle řadové pozice v seznamu SELECT Použití pozice se ve vašich aplikacích nedoporučuje, protože se snižuje čitelnost a dodatečná péče potřebná k udržování seznamu ORDER BY v aktualizovaném stavu. U složitých výrazů v seznamu SELECT ale může být použití čísla pozice užitečné při řešení potíží.
  • Sloupce nejsou zahrnuté v seznamu SELECT, ale dostupné z tabulek uvedených v klauzuli FROM. Pokud dotaz používá možnost DISTINCT, všechny sloupce v seznamu ORDER BY musí být zahrnuty do seznamu SELECT.

Směr řazení

Kromě určení sloupců, které se mají použít k určení pořadí řazení, můžete také řídit směr řazení. ASC můžete použít pro vzestupné (A-Z, 0-9) nebo DESC pro sestupné (Z-A, 9-0). Vzestupné řazení je výchozí. Každý sloupec může mít zadaný vlastní směr, jak je znázorněno v následujícím příkladu:

SELECT ProductCategoryID AS Category, ProductName
FROM Production.Product
ORDER BY Category ASC, Price DESC;