Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:SQL Server
Azure SQL Database
Spravovaná instance Azure SQL
Azure Synapse Analytics
Analytics Platform System (PDW)
Koncový bod analýzy SQL v Microsoft Fabric
Sklad v Microsoft Fabric
Databáze SQL v Microsoft Fabric
Seřadí data vrácená dotazem na SQL Serveru. Pomocí této klauzule můžete:
Seřazení sady výsledků dotazu podle zadaného seznamu sloupců a volitelně omezení řádků vrácených do zadané oblasti. Pořadí, ve kterém jsou řádky vráceny v sadě výsledků, není zaručeno, pokud
ORDER BYnení zadána klauzule.Určete pořadí, ve kterém se hodnoty funkce řazení použijí na sadu výsledků.
Note
ORDER BY nepodporuje SELECT/INTO příkazy CTAS CREATE TABLE AS SELECT (Azure Synapse Analytics) nebo PdW (Analytics Platform System).
Syntax
Syntaxe pro SQL Server a Azure SQL Database
ORDER BY order_by_expression
[ COLLATE collation_name ]
[ ASC | DESC ]
[ , ...n ]
[ <offset_fetch> ]
<offset_fetch> ::=
{
OFFSET { integer_constant | offset_row_count_expression } { ROW | ROWS }
[
FETCH { FIRST | NEXT } { integer_constant | fetch_row_count_expression } { ROW | ROWS } ONLY
]
}
Syntaxe pro Systém platformy Azure Synapse Analytics a Analytics (PDW):
[ ORDER BY
{
order_by_expression
[ ASC | DESC ]
} [ , ...n ]
]
Arguments
order_by_expression
Určuje sloupec nebo výraz, podle kterého se má sada výsledků dotazu seřadit. Sloupec řazení můžete zadat jako alias názvu nebo sloupce nebo jako nezáporné celé číslo představující pozici sloupce v seznamu výběru.
Můžete zadat více sloupců řazení. Názvy sloupců musí být jedinečné. Posloupnost sloupců řazení v ORDER BY klauzuli definuje uspořádání seřazené sady výsledků. Sada výsledků se seřadí podle prvního sloupce a pak se seřazený seznam seřadí podle druhého sloupce atd.
Názvy sloupců, na které odkazujete v ORDER BY klauzuli, musí odpovídat aliasu sloupce nebo sloupce v seznamu select nebo sloupci definovanému v tabulce zadané v FROM klauzuli bez nejednoznačností.
ORDER BY Pokud klauzule odkazuje na alias sloupce ze seznamu select, použijte vlastní alias sloupce. Nepoužívejte alias sloupce jako součást výrazu v klauzuli ORDER BY .
Například:
Správné použití:
SELECT SCHEMA_NAME(schema_id) AS SchemaName FROM sys.objects ORDER BY SchemaName; -- correctNesprávné použití:
SELECT SCHEMA_NAME(schema_id) AS SchemaName FROM sys.objects ORDER BY SchemaName + ''; -- wrong
COLLATION_NAME COLLATE
Určuje, že ORDER BY operace by měla být provedena podle kolace, kterou zadáte v collation_name, a ne podle kolace sloupce definovaného v tabulce nebo zobrazení.
Collation_name může být buď název kolace Systému Windows, nebo název kolace SQL. Další informace najdete v tématu podpora kolace a kódování Unicode.
COLLATE platí pouze pro sloupce typu char, varchar, nchara nvarchar.
ASC | DESC
Určuje, že hodnoty v zadaném sloupci by měly být seřazeny vzestupně nebo sestupně.
ASC seřadí od nejnižší hodnoty k nejvyšší hodnotě.
DESC seřadí od nejvyšší hodnoty k nejnižší hodnotě.
ASC je výchozí pořadí řazení.
NULL hodnoty jsou považovány za nejnižší možné hodnoty.
POSUN { integer_constant offset_row_count_expression | } { ŘÁDEK | ŘÁDKY }
Platí pro: SQL Server 2012 (11.x) a novější verze, Azure SQL Database a Azure SQL Managed Instance.
Určuje počet řádků, které se mají přeskočit před tím, než dotaz začne vracet řádky z výrazu dotazu. Hodnota může být celočíselná konstanta nebo výraz, který je větší nebo roven nule.
offset_row_count_expression může být proměnná, parametr nebo konstantní skalární poddotaz. Když použijete poddotaz, nemůže odkazovat na žádné sloupce definované v oboru vnějšího dotazu. To znamená, že nemůže být korelován s vnějším dotazem.
ROW a ROWS jsou synonyma a jsou poskytovány pro kompatibilitu ANSI.
V plánech provádění dotazů se hodnota počtu řádků posunu zobrazí v atributu Posun operátoru TOP dotazu.
FETCH { FIRST | NEXT } { integer_constant fetch_row_count_expression | } { ŘÁDEK | POUZE ŘÁDKY }
Platí pro: SQL Server 2012 (11.x) a novější verze, Azure SQL Database a Azure SQL Managed Instance.
Určuje počet řádků, které se mají vrátit po OFFSET zpracování klauzule. Hodnota může být celočíselná konstanta nebo výraz, který je větší nebo roven jedné.
fetch_row_count_expression může být proměnná, parametr nebo konstantní skalární poddotaz. Když použijete poddotaz, nemůže odkazovat na žádné sloupce definované v oboru vnějšího dotazu. To znamená, že nemůže být korelován s vnějším dotazem.
FIRST a NEXT jsou synonyma a jsou poskytovány pro kompatibilitu ANSI.
ROW a ROWS jsou synonyma a jsou poskytovány pro kompatibilitu ANSI.
V plánech provádění dotazů se hodnota počtu odsazení řádků zobrazí v atributu Řádky nebo Horní atribut operátoru TOP dotazu.
Osvědčené postupy
Vyhněte se zadávání celých čísel v ORDER BY klauzuli jako poziční reprezentace sloupců v seznamu select. I když je například příkaz SELECT ProductID, Name FROM Production.Production ORDER BY 2 platný, může být pro uživatele obtížné porozumět v porovnání s určením skutečného názvu sloupce. Kromě toho změny v seznamu výběrů, například změna pořadí sloupců nebo přidání nových sloupců, vyžadují úpravu ORDER BY klauzule, aby nedocházelo k neočekávaným výsledkům.
SELECT TOP (<n>) V příkazu vždy použijte klauzuliORDER BY. Toto je jediný způsob, jak předpovědět, které řádky TOP ovlivňují. Další informace najdete v tématu TOP.
Interoperability
Pokud použijete ORDER BY s příkazem SELECT...INTO nebo INSERT...SELECT vložíte řádky z jiného zdroje, klauzule nezaručuje, ORDER BY že se řádky vloží do zadaného pořadí.
Použití OFFSET a FETCH v zobrazení nemění vlastnost aktualizovatelnosti zobrazení.
Limitations
Počet sloupců v ORDER BY klauzuli není nijak omezený. Celková velikost sloupců zadaných v ORDER BY klauzuli však nesmí překročit 8 060 bajtů.
V klauzuli nelze použít sloupce typu ntext, text, obrázek, geografie, geometrie nebo xmlORDER BY.
Pokud se order_by_expression zobrazí ve funkci řazení, nemůžete zadat celé číslo ani konstantu. Další informace naleznete v tématu SELECT - OVER klauzule.
Pokud v klauzuli aliasujete název FROM tabulky, musíte použít název aliasu pro kvalifikaci sloupců v klauzuli ORDER BY .
SELECT Pokud příkaz obsahuje jednu z následujících klauzulí nebo operátorů, musíte definovat názvy sloupců a aliasy zadané v ORDER BY klauzuli v seznamu select:
-
UNIONoperátor -
EXCEPToperátor -
INTERSECToperátor SELECT DISTINCT
Kromě toho, když příkaz obsahuje UNION, EXCEPTnebo INTERSECT operátor, výběrový seznam prvního (levého) dotazu musí určovat názvy sloupců nebo aliasy sloupců.
V dotazu, který používá UNION, EXCEPTnebo INTERSECT operátory, můžete použít ORDER BY pouze na konci příkazu. Toto omezení platí pouze v případě, že zadáte UNION, EXCEPTa INTERSECT v dotazu nejvyšší úrovně, a ne v poddotazu. Viz část Příklady .
Klauzule ORDER BY není platná v zobrazeních, vložených funkcích, odvozených tabulkách a poddotazech, pokud nezadáte ani TOP klauzule nebo OFFSETFETCH klauzule. Při použití ORDER BY v těchto objektech se klauzule používá pouze k určení řádků vrácených TOP klauzulí nebo OFFSETFETCH klauzulí. Klauzule ORDER BY nezaručuje seřazené výsledky při dotazování těchto konstruktorů, pokud ORDER BY není také zadána v samotném dotazu.
OFFSET a FETCH nejsou podporovány v indexovaných zobrazeních nebo v zobrazení, které je definováno pomocí CHECK OPTION klauzule.
OFFSET a FETCH lze ho použít v libovolném dotazu, který umožňuje TOP a ORDER BY s následujícími omezeními:
Klauzule
OVERnepodporujeOFFSETaFETCH.Nemůžete zadat
OFFSETaFETCHpřímo vINSERT,UPDATE,MERGEaDELETEpříkazy, ale můžete je zadat v poddotaz definovaných v těchto příkazech. Například vINSERT INTO SELECTpříkazu můžete zadatOFFSETaFETCHvSELECTpříkazu.V dotazu, který používá
UNION,EXCEPTneboINTERSECToperátory, pouze konečný dotaz, který určuje pořadí výsledků dotazu může zadatOFFSETaFETCH.Nemůžete kombinovat
TOPsOFFSETaFETCHve stejném výrazu dotazu (ve stejném oboru dotazu).
Omezení vrácených řádků pomocí posunu a funkce FETCH
OFFSET
FETCH Místo klauzule použijte klauzule TOP k implementaci stránkovacího řešení dotazu a omezení počtu řádků odesílaných do klientské aplikace.
Použití OFFSET a FETCH jako stránkovací řešení vyžaduje jedno spuštění dotazu pro každou stránku dat vrácených do klientské aplikace. Pokud například chcete vrátit výsledky dotazu v přírůstcích po 10 řádcích, musíte dotaz spustit jednou, aby se vrátily řádky 1 až 10, a pak dotaz znovu spusťte, aby se vrátily řádky 11 až 20 atd. Každý dotaz je nezávislý a nesouvisí mezi sebou žádným způsobem. Tato podmínka znamená, že na rozdíl od použití kurzoru, ve kterém je dotaz spuštěn jednou a stav je udržován na serveru, je klientská aplikace zodpovědná za sledování stavu. Aby bylo možné dosáhnout stabilních výsledků mezi požadavky na dotazy, které používají OFFSET , a FETCHmusí být splněny následující podmínky:
Podkladová data, která dotaz používá, se nemění. To znamená, že dotaz neaktualizuje řádky nebo všechny požadavky na stránky z dotazu spuštěné v jedné transakci pomocí snímku nebo serializovatelné izolace transakce. Další informace o těchto úrovních izolace transakcí naleznete v tématu SET TRANSACTION ISOLATION LEVEL.
Klauzule
ORDER BYobsahuje sloupec nebo kombinaci sloupců, u kterých je zaručeno, že budou jedinečné.
Podívejte se na příklad Spuštění více dotazů v jedné transakci v části Příklady .
Pokud jsou ve stránkovacím řešení důležité konzistentní plány provádění, zvažte použití nápovědy OPTIMIZE FOR k dotazu pro parametry OFFSET a FETCH parametry. Viz Zadání výrazů pro hodnoty OFFSET a FETCH v části Příklady . Další informace naleznete v OPTIMIZE FORtématu Nápovědy k dotazům.
Examples
Ukázky kódu v tomto článku používají ukázkovou databázi AdventureWorks2025 nebo AdventureWorksDW2025, kterou si můžete stáhnout z domovské stránky Microsoft SQL Serveru pro ukázky a komunitní projekty .
| Category | Doporučené prvky syntaxe |
|---|---|
| Základní syntaxe | ORDER BY |
| Určení vzestupného a sestupného pořadí |
DESC nebo ASC |
| Určení kolace | COLLATE |
| Zadání podmíněného pořadí | výraz CASE |
| Použití FUNKCE ORDER BY ve funkci řazení | Funkce řazení |
| Omezení počtu vrácených řádků |
OFFSET a FETCH |
| Použití FUNKCE ORDER BY se UNION, EXCEPT a INTERSECT | UNION |
Základní syntaxe
Příklady v této části ukazují základní funkce klauzule ORDER BY pomocí minimální požadované syntaxe.
A. Zadání jednoho sloupce definovaného v seznamu výběru
Následující příklad objedná výsledek nastavený číselným ProductID sloupcem. Vzhledem k tomu, že nezadáte pořadí řazení, použije dotaz výchozí vzestupné pořadí.
USE AdventureWorks2025;
GO
SELECT ProductID,
Name
FROM Production.Product
WHERE Name LIKE 'Lock Washer%'
ORDER BY ProductID;
B. Zadejte sloupec, který není definován v seznamu výběru.
Následující příklad objedná sadu výsledků podle sloupce, který seznam select neobsahuje, ale FROM klauzule určuje tabulku, která obsahuje sloupec.
USE AdventureWorks2025;
GO
SELECT ProductID,
Name,
Color
FROM Production.Product
ORDER BY ListPrice;
C. Zadání aliasu jako sloupce řazení
Následující příklad určuje alias SchemaName sloupce jako sloupec pořadí řazení.
USE AdventureWorks2025;
GO
SELECT name,
SCHEMA_NAME(schema_id) AS SchemaName
FROM sys.objects
WHERE type = 'U'
ORDER BY SchemaName;
D. Zadání výrazu jako sloupce řazení
Následující příklad používá výraz jako sloupec řazení. Výraz je definován pomocí DATEPART funkce k seřazení výsledků nastavených podle roku, ve kterém byli zaměstnanci přijati.
USE AdventureWorks2025;
GO
SELECT BusinessEntityID,
JobTitle,
HireDate
FROM HumanResources.Employee
ORDER BY DATEPART(year, HireDate);
Určení vzestupného a sestupného pořadí řazení
A. Zadání sestupně seřazeného pořadí
Následující příklad objedná sadu výsledků podle číselného sloupce ProductID v sestupném pořadí.
USE AdventureWorks2025;
GO
SELECT ProductID,
Name
FROM Production.Product
WHERE Name LIKE 'Lock Washer%'
ORDER BY ProductID DESC;
B. Zadání vzestupného pořadí
Následující příklad seřídí sadu výsledků podle Name sloupce ve vzestupném pořadí. Znaky jsou seřazené abecedně, ne číselně. To znamená, že 10 seřadí před 2.
USE AdventureWorks2025;
GO
SELECT ProductID,
Name
FROM Production.Product
WHERE Name LIKE 'Lock Washer%'
ORDER BY Name ASC;
C. Určení vzestupného i sestupného pořadí
Následující příklad objedná výsledek nastavený dvěma sloupci. Sada výsledků dotazu se nejprve seřadí ve vzestupném pořadí podle FirstName sloupce a potom seřadí sestupně podle LastName sloupce.
USE AdventureWorks2025;
GO
SELECT LastName,
FirstName
FROM Person.Person
WHERE LastName LIKE 'R%'
ORDER BY FirstName ASC, LastName DESC;
Určení kolace
Následující příklad ukazuje, jak určení kolace v ORDER BY klauzuli může změnit pořadí, ve kterém se vrátí výsledky dotazu. Vytvoří se tabulka, která obsahuje sloupec definovaný pomocí nerozlišující velká a malá písmena bez rozlišování zvýrazňující kolace. Hodnoty se vkládají s různými písmeny a rozdíly diakritiky. Protože kolace není v klauzuli zadaná ORDER BY , první dotaz při řazení hodnot použije kolaci sloupce. V druhém dotazu je v klauzuli zadána ORDER BY kolace s rozlišováním velkých a malých písmen, která mění pořadí, ve kterém jsou řádky vráceny.
USE tempdb;
GO
CREATE TABLE #t1
(
name NVARCHAR (15) COLLATE Latin1_General_CI_AI
);
INSERT INTO #t1
VALUES (N'Sánchez'),
(N'Sanchez'),
(N'sánchez'),
(N'sanchez');
-- This query uses the collation specified for the column 'name' for sorting.
SELECT name
FROM #t1
ORDER BY name;
-- This query uses the collation specified in the ORDER BY clause for sorting.
SELECT name
FROM #t1
ORDER BY name COLLATE Latin1_General_CS_AS;
Zadání podmíněného pořadí
Následující příklady používají CASE výraz v ORDER BY klauzuli k podmíněnému určení pořadí řazení řádků na základě dané hodnoty sloupce. V prvním příkladu se vyhodnotí hodnota ve SalariedFlag sloupci HumanResources.Employee tabulky. Zaměstnanci, kteří mají nastavenou SalariedFlag hodnotu 1, se vrátí v pořadí sestupně BusinessEntityID . Zaměstnanci, kteří mají nastavenou SalariedFlag hodnotu 0, se vrátí v pořadí BusinessEntityID vzestupně. V druhém příkladu je sada výsledků seřazena podle sloupce TerritoryName , pokud se sloupec CountryRegionName rovná "Spojené státy" a podle CountryRegionName všech ostatních řádků.
SELECT BusinessEntityID,
SalariedFlag
FROM HumanResources.Employee
ORDER BY
CASE SalariedFlag
WHEN 1 THEN BusinessEntityID
END DESC,
CASE
WHEN SalariedFlag = 0 THEN BusinessEntityID
END;
SELECT BusinessEntityID,
LastName,
TerritoryName,
CountryRegionName
FROM Sales.vSalesPerson
WHERE TerritoryName IS NOT NULL
ORDER BY
CASE CountryRegionName
WHEN 'United States' THEN TerritoryName ELSE CountryRegionName
END;
Použití FUNKCE ORDER BY ve funkci řazení
Následující příklad používá klauzuli ORDER BY ve funkcích ROW_NUMBERřazení , RANK, DENSE_RANKa NTILE.
USE AdventureWorks2025;
GO
SELECT p.FirstName,
p.LastName,
ROW_NUMBER() OVER (ORDER BY a.PostalCode) AS "Row Number",
RANK() OVER (ORDER BY a.PostalCode) AS "Rank",
DENSE_RANK() OVER (ORDER BY a.PostalCode) AS "Dense Rank",
NTILE(4) OVER (ORDER BY a.PostalCode) AS "Quartile",
s.SalesYTD,
a.PostalCode
FROM Sales.SalesPerson AS s
INNER JOIN Person.Person AS p
ON s.BusinessEntityID = p.BusinessEntityID
INNER JOIN Person.Address AS a
ON a.AddressID = p.BusinessEntityID
WHERE TerritoryID IS NOT NULL
AND SalesYTD <> 0;
Omezení počtu vrácených řádků
Platí pro: SQL Server 2012 (11.x) a novější verze, Azure SQL Database a Azure SQL Managed Instance.
Následující příklady používají OFFSET a FETCH omezují počet řádků vrácených dotazem.
A. Zadejte celočíselné konstanty pro hodnoty OFFSET a FETCH.
Následující příklad určuje celočíselnou konstantu jako hodnotu pro OFFSET klauzule a FETCH klauzule. První dotaz vrátí všechny řádky seřazené podle sloupce DepartmentID. Porovnejte výsledky vrácené tímto dotazem s výsledky dvou následujících dotazů. Další dotaz pomocí klauzule OFFSET 5 ROWS přeskočí prvních pět řádků a vrátí všechny zbývající řádky. Poslední dotaz použije klauzuli OFFSET 0 ROWS , která začíná prvním řádkem a pak použije FETCH NEXT 10 ROWS ONLY k omezení řádků vrácených na 10 řádků ze seřazené sady výsledků.
USE AdventureWorks2025;
GO
-- Return all rows sorted by the column DepartmentID.
SELECT DepartmentID,
Name,
GroupName
FROM HumanResources.Department
ORDER BY DepartmentID;
-- Skip the first 5 rows from the sorted result set and return all remaining rows.
SELECT DepartmentID,
Name,
GroupName
FROM HumanResources.Department
ORDER BY DepartmentID OFFSET 5 ROWS;
-- Skip 0 rows and return only the first 10 rows from the sorted result set.
SELECT DepartmentID,
Name,
GroupName
FROM HumanResources.Department
ORDER BY DepartmentID OFFSET 0 ROWS
FETCH NEXT 10 ROWS ONLY;
B. Zadání proměnných pro hodnoty OFFSET a FETCH
Následující příklad deklaruje proměnné @RowsToSkip a @FetchRows určuje tyto proměnné v OFFSET klauzulích a FETCH klauzulích.
USE AdventureWorks2025;
GO
-- Specifying variables for OFFSET and FETCH values
DECLARE @RowsToSkip AS TINYINT = 2,
@FetchRows AS TINYINT = 8;
SELECT DepartmentID,
Name,
GroupName
FROM HumanResources.Department
ORDER BY DepartmentID ASC OFFSET @RowsToSkip ROWS
FETCH NEXT @FetchRows ROWS ONLY;
C. Zadání výrazů pro hodnoty OFFSET a FETCH
Následující příklad používá výraz @StartingRowNumber - 1 k určení OFFSET hodnoty a výraz @EndingRowNumber - @StartingRowNumber + 1 k určení FETCH hodnoty. Kromě toho je zadána nápověda OPTIMIZE FORdotazu. Tento tip použijte k poskytnutí konkrétní hodnoty pro místní proměnnou při kompilaci a optimalizaci dotazu. Hodnota se používá pouze při optimalizaci dotazu, a ne během provádění dotazu. Další informace najdete v tématu Nápovědy k dotazům.
USE AdventureWorks2025;
GO
-- Specifying expressions for OFFSET and FETCH values
DECLARE @StartingRowNumber AS TINYINT = 1,
@EndingRowNumber AS TINYINT = 8;
SELECT DepartmentID,
Name,
GroupName
FROM HumanResources.Department
ORDER BY DepartmentID ASC OFFSET @StartingRowNumber - 1 ROWS
FETCH NEXT @EndingRowNumber - @StartingRowNumber + 1 ROWS ONLY
OPTION (OPTIMIZE FOR (@StartingRowNumber = 1, @EndingRowNumber = 20));
D. Zadání konstantního skalárního poddotazu pro hodnoty OFFSET a FETCH
Následující příklad používá konstantní skalární poddotaz k definování hodnoty klauzule FETCH . Poddotaz vrátí jednu hodnotu ze sloupce PageSize v tabulce dbo.AppSettings.
-- Specifying a constant scalar subquery
USE AdventureWorks2025;
GO
CREATE TABLE dbo.AppSettings
(
AppSettingID INT NOT NULL,
PageSize INT NOT NULL
);
INSERT INTO dbo.AppSettings
VALUES (1, 10);
DECLARE @StartingRowNumber AS TINYINT = 1;
SELECT DepartmentID,
Name,
GroupName
FROM HumanResources.Department
ORDER BY DepartmentID ASC
OFFSET @StartingRowNumber ROWS
FETCH NEXT (SELECT PageSize
FROM dbo.AppSettings
WHERE AppSettingID = 1) ROWS ONLY;
E. Spuštění více dotazů v jedné transakci
Následující příklad ukazuje jednu metodu implementace stránkovacího řešení, která zajišťuje, že stabilní výsledky budou vráceny ve všech požadavcích z dotazu. Dotaz se provádí v jedné transakci pomocí úrovně izolace snímku a sloupec zadaný v ORDER BY klauzuli zajišťuje jedinečnost sloupce.
USE AdventureWorks2025;
GO
-- Ensure the database can support the snapshot isolation level set for the query.
IF (SELECT snapshot_isolation_state
FROM sys.databases
WHERE name = N'AdventureWorks2025') = 0
ALTER DATABASE AdventureWorks2025
SET ALLOW_SNAPSHOT_ISOLATION ON;
-- Set the transaction isolation level to SNAPSHOT for this query.
SET TRANSACTION ISOLATION LEVEL SNAPSHOT;
-- Beginning the transaction.
BEGIN TRANSACTION;
-- Declare and set the variables for the OFFSET and FETCH values.
DECLARE @StartingRowNumber AS INT = 1,
@RowCountPerPage AS INT = 3;
-- Create the condition to stop the transaction after all rows have been returned.
WHILE (SELECT COUNT(*)
FROM HumanResources.Department) >= @StartingRowNumber
BEGIN
-- Run the query until the stop condition is met.
SELECT DepartmentID,
Name,
GroupName
FROM HumanResources.Department
ORDER BY DepartmentID ASC OFFSET @StartingRowNumber - 1 ROWS
FETCH NEXT @RowCountPerPage ROWS ONLY;
-- Increment @StartingRowNumber value.
SET @StartingRowNumber = @StartingRowNumber + @RowCountPerPage;
CONTINUE;
END
COMMIT TRANSACTION;
Použití FUNKCE ORDER BY se UNION, EXCEPT a INTERSECT
Pokud dotaz používá operátory UNION, EXCEPTnebo INTERSECT , zadejte ORDER BY klauzuli na konci příkazu. Dotaz seřadí výsledky kombinovaných dotazů. Následující příklad vrátí všechny produkty, které jsou červené nebo žluté a seřadí tento kombinovaný seznam podle sloupce ListPrice.
USE AdventureWorks2025;
GO
SELECT Name,
Color,
ListPrice
FROM Production.Product
WHERE Color = 'Red' -- ORDER BY cannot be specified here.
UNION ALL
SELECT Name,
Color,
ListPrice
FROM Production.Product
WHERE Color = 'Yellow'
ORDER BY ListPrice ASC;
Příklady: Azure Synapse Analytics a Analytický platformový systém (PDW)
Následující příklad ukazuje řazení sady výsledků číselným EmployeeKey sloupcem ve vzestupném pořadí.
-- Uses AdventureWorks
SELECT EmployeeKey,
FirstName,
LastName
FROM DimEmployee
WHERE LastName LIKE 'A%'
ORDER BY EmployeeKey;
Následující příklad objedná výsledek nastavený číselným EmployeeKey sloupcem v sestupném pořadí.
-- Uses AdventureWorks
SELECT EmployeeKey,
FirstName,
LastName
FROM DimEmployee
WHERE LastName LIKE 'A%'
ORDER BY EmployeeKey DESC;
V následujícím příkladu se ve sloupci nastaví LastName výsledek.
-- Uses AdventureWorks
SELECT EmployeeKey,
FirstName,
LastName
FROM DimEmployee
WHERE LastName LIKE 'A%'
ORDER BY LastName;
V následujícím příkladu jsou seřazené podle dvou sloupců. Tento dotaz nejprve seřadí podle sloupce vzestupně FirstName a potom seřadí běžné FirstName hodnoty podle sloupce sestupně LastName .
-- Uses AdventureWorks
SELECT EmployeeKey,
FirstName,
LastName
FROM DimEmployee
WHERE LastName LIKE 'A%'
ORDER BY LastName, FirstName;