ORDER BY (NoSQL-fråga)
GÄLLER FÖR: NoSQL
Den valfria ORDER BY
satsen anger sorteringsordningen för resultat som returneras av frågan.
Syntax
ORDER BY <sort_specification>
<sort_specification> ::= <sort_expression> [, <sort_expression>]
<sort_expression> ::= {<scalar_expression> [ASC | DESC]} [ ,...n ]
Argument
beskrivning | |
---|---|
<sort_specification> |
Anger en egenskap eller ett uttryck som frågeresultatuppsättningen ska sorteras på. En sorteringskolumn kan anges som ett namn eller egenskapsalias. Flera egenskaper kan anges. Egenskapsnamn måste vara unika. Sekvensen för sorteringsegenskaperna ORDER BY i -satsen definierar organisationen för den sorterade resultatuppsättningen. Det innebär att resultatuppsättningen sorteras efter den första egenskapen och sedan sorteras den ordnade listan efter den andra egenskapen och så vidare. Egenskapsnamnen ORDER BY som refereras till i -satsen måste motsvara antingen en egenskap i urvalslistan eller till en egenskap som definierats i samlingen som anges i FROM -satsen utan tvetydigheter. |
<sort_expression> |
Anger en eller flera egenskaper eller uttryck som frågeresultatuppsättningen ska sorteras på. |
<scalar_expression> |
Uttryck som representerar det värde som ska beräknas. |
ASC eller DESC |
Anger att värdena i den angivna kolumnen ska sorteras i stigande eller fallande ordning. ASC sorterar från det lägsta värdet till det högsta värdet. DESC sorterar från högsta till lägsta värde. Om det här argumentet inte anges ASC är (stigande) standardsorteringsordningen. null värden behandlas som de lägsta möjliga värdena. |
Kommentar
Mer information om skalära uttryck finns i skalära uttryck
Exempel
För exemplen i det här avsnittet används den här referensuppsättningen med objekt. Varje objekt innehåller en name
egenskap med first
och last
underegenskaper.
[
{
"name": {
"first": "Casey",
"last": "Jensen"
},
"team": "Human resources"
},
{
"name": {
"first": "Amari",
"last": "Rivera"
},
"team": "Human resources"
},
{
"name": {
"first": "Kayla",
"last": "Lewis"
},
"team": "Human resources"
}
]
I det första exemplet ORDER BY
används -satsen för att sortera ett fält efter standardsorteringsordningen, stigande.
SELECT VALUE {
firstName: e.name.first,
lastName: e.name.last
}
FROM
employees e
ORDER BY
e.name.last
[
{
"firstName": "Casey",
"lastName": "Jensen"
},
{
"firstName": "Kayla",
"lastName": "Lewis"
},
{
"firstName": "Amari",
"lastName": "Rivera"
}
]
I nästa exempel anges sorteringsordningen uttryckligen som fallande.
SELECT VALUE {
firstName: e.name.first,
lastName: e.name.last
}
FROM
employees e
ORDER BY
e.name.last DESC
[
{
"firstName": "Amari",
"lastName": "Rivera"
},
{
"firstName": "Kayla",
"lastName": "Lewis"
},
{
"firstName": "Casey",
"lastName": "Jensen"
}
]
I det här sista exemplet sorteras objekten med hjälp av två fält, i en specifik ordning med explicit angiven ordning. En fråga som sorterar med hjälp av två eller flera fält kräver ett sammansatt index.
SELECT VALUE {
firstName: e.name.first,
lastName: e.name.last
}
FROM
employees e
ORDER BY
e.name.last DESC,
e.name.first ASC
Kommentarer
- Frågor med
ORDER BY
returnerar alla objekt, inklusive objekt där egenskapen i ORDER BY-satsen inte har definierats. Vanligtvis kan du inte styra ordningen som olikaundefined
typer visas i resultatet. Om du vill styra sorteringsordningen för odefinierade värden tilldelar du allaundefined
egenskaper ett godtyckligt värde för att säkerställa att de sorterar antingen före eller efter de definierade värdena. ORDER BY
Satsen kräver att indexeringsprincipen innehåller ett index för fälten som sorteras. Frågekörningen stöder sortering mot ett egenskapsnamn eller beräknade egenskaper. Körningen stöder också fleraORDER BY
egenskaper. För att kunna köra en fråga med fleraORDER BY
egenskaper definierar du ett sammansatt index för de fält som sorteras.- Om egenskaperna som sorteras kan vara
undefined
för vissa objekt och du vill hämta dem i enORDER BY
fråga måste du uttryckligen inkludera den här sökvägen i indexet. Standardindexeringsprincipen tillåter inte hämtning av objekten där sorteringsegenskapen ärundefined
.