ORDER BY (Entitets-SQL)
Anger sorteringsordningen som används för objekt som returneras i en SELECT-instruktion.
Syntax
[ ORDER BY
{
order_by_expression [SKIP n] [LIMIT n]
[ COLLATE collation_name ]
[ ASC | DESC ]
}
[ ,…n ]
]
Argument
order_by_expression
Ett giltigt frågeuttryck som anger en egenskap som ska sorteras på. Flera sorteringsuttryck kan anges. Sekvensen för sorteringsuttrycken i ORDER BY-satsen definierar organisationen för den sorterade resultatuppsättningen.
COLLATE {collation_name} Anger att ÅTGÄRDEN ORDER BY ska utföras enligt sorteringen som anges i collation_name
. COLLATE gäller endast för stränguttryck.
ASC Anger att värdena i den angivna egenskapen ska sorteras i stigande ordning, från det lägsta värdet till det högsta värdet. Det här är standardinställningen.
DESC Anger att värdena i den angivna egenskapen ska sorteras i fallande ordning, från högsta till lägsta värde.
BEGRÄNSA n
Endast de första n
objekten markeras.
SKIP n
hoppar över de första n
objekten.
Kommentarer
ORDER BY-satsen tillämpas logiskt på resultatet av SELECT-satsen. ORDER BY-satsen kan referera till objekt i urvalslistan med hjälp av deras alias. ORDER BY-satsen kan också referera till andra variabler som för närvarande är inom omfånget. Men om SELECT-satsen har angetts med en DISTINCT-modifierare kan ORDER BY-satsen endast referera till alias från SELECT-satsen.
SELECT c AS c1 FROM cs AS c ORDER BY c1.e1, c.e2
Varje uttryck i ORDER BY-satsen måste utvärderas till någon typ som kan jämföras med ordnad ojämlikhet (mindre än eller större än och så vidare). Dessa typer är vanligtvis skalära primitiver som tal, strängar och datum. RowTypes av jämförbara typer är också order jämförbara.
Om koden itererar över en ordnad uppsättning, förutom för en projektion på toppnivå, garanteras inte utdata att dess order bevaras.
I följande exempel är ordningen garanterad att bevaras:
SELECT C1.FirstName, C1.LastName
FROM AdventureWorks.Contact as C1
ORDER BY C1.LastName
I följande fråga ignoreras ordningen på den kapslade frågan:
SELECT C2.FirstName, C2.LastName
FROM (SELECT C1.FirstName, C1.LastName
FROM AdventureWorks.Contact as C1
ORDER BY C1.LastName) as C2
Om du vill ha en ordnad UNION-, UNION ALL-, EXCEPT- eller INTERSECT-åtgärd använder du följande mönster:
SELECT ...
FROM ( UNION/EXCEPT/INTERSECT operation )
ORDER BY ...
Begränsade nyckelord
Följande nyckelord måste omges av citattecken när de används i en ORDER BY
sats:
CROSS
FULL
NYCKEL
LEFT
ORDNING
YTTRE
RIGHT
RAD
VÄRDE
Beställa kapslade frågor
I Entity Framework kan ett kapslat uttryck placeras var som helst i frågan. ordningen på en kapslad fråga bevaras inte.
Följande fråga beställer resultatet efter efternamnet:
SELECT C1.FirstName, C1.LastName
FROM AdventureWorks.Contact as C1
ORDER BY C1.LastName
I följande fråga ignoreras ordningen på den kapslade frågan:
SELECT C2.FirstName, C2.LastName
FROM (SELECT C1.FirstName, C1.LastName
FROM AdventureWorks.Contact as C1
ORDER BY C1.LastName) as C2
Exempel
Följande SQL-entitetsfråga använder ORDER BY-operatorn för att ange den sorteringsordning som används för objekt som returneras i en SELECT-instruktion. Frågan baseras på AdventureWorks försäljningsmodell. Följ dessa steg för att kompilera och köra den här frågan:
Följ proceduren i Så här kör du en fråga som returnerar StructuralType-resultat.
Skicka följande fråga som ett argument till
ExecuteStructuralTypeQuery
metoden:
SELECT VALUE p FROM AdventureWorksEntities.Products
AS p ORDER BY p.ListPrice