ORDER BY (dotaz NoSQL)
PLATÍ PRO: NoSQL
Volitelná ORDER BY
klauzule určuje pořadí řazení výsledků vrácených dotazem.
Syntaxe
ORDER BY <sort_specification>
<sort_specification> ::= <sort_expression> [, <sort_expression>]
<sort_expression> ::= {<scalar_expression> [ASC | DESC]} [ ,...n ]
Argumenty
Popis | |
---|---|
<sort_specification> |
Určuje vlastnost nebo výraz, podle kterého se má sada výsledků dotazu seřadit. Sloupec řazení lze zadat jako název nebo alias vlastnosti. Lze zadat více vlastností. Názvy vlastností musí být jedinečné. Posloupnost vlastností řazení v ORDER BY klauzuli definuje uspořádání seřazené sady výsledků. To znamená, že sada výsledků se seřadí podle první vlastnosti a pak se seřazený seznam seřadí podle druhé vlastnosti atd. Názvy vlastností odkazované v ORDER BY klauzuli musí odpovídat vlastnosti v seznamu select nebo vlastnosti definované v kolekci zadané v FROM klauzuli bez nejednoznačností. |
<sort_expression> |
Určuje jednu nebo více vlastností nebo výrazů, pro které se má sada výsledků dotazu seřadit. |
<scalar_expression> |
Výraz představující hodnotu, která se má vypočítat. |
ASC nebo 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ě. Pokud tento argument není zadaný, ASC (vzestupně) je výchozí pořadí řazení. null hodnoty jsou považovány za nejnižší možné hodnoty. |
Poznámka:
Další informace o skalárních výrazech najdete v tématu skalární výrazy.
Příklady
V příkladech v této části se používá tato referenční sada položek. Každá položka obsahuje name
vlastnost s dílčími obdobímifirst
.last
[
{
"name": {
"first": "Casey",
"last": "Jensen"
},
"team": "Human resources"
},
{
"name": {
"first": "Amari",
"last": "Rivera"
},
"team": "Human resources"
},
{
"name": {
"first": "Kayla",
"last": "Lewis"
},
"team": "Human resources"
}
]
V tomto prvním příkladu ORDER BY
se klauzule používá k seřazení pole podle výchozího pořadí řazení vzestupně.
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"
}
]
V tomto dalším příkladu je pořadí řazení explicitně určeno tak, aby bylo sestupné.
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"
}
]
V tomto posledním příkladu jsou položky seřazené pomocí dvou polí v určitém pořadí pomocí explicitně zadaného řazení. Dotaz, který seřadí pomocí dvou nebo více polí, vyžaduje složený index.
SELECT VALUE {
firstName: e.name.first,
lastName: e.name.last
}
FROM
employees e
ORDER BY
e.name.last DESC,
e.name.first ASC
Poznámky
- Dotazy s vrácením
ORDER BY
všech položek, včetně položek, ve kterých není definována vlastnost v klauzuli ORDER BY. Obvykle nemůžete řídit pořadí, v jakém se ve výsledcích zobrazují různéundefined
typy. Chcete-li řídit pořadí řazení nedefinovaných hodnot, přiřaďte jakékoliundefined
vlastnosti libovolnou hodnotu, aby se zajistilo, že seřadí buď před nebo za definovanými hodnotami. - Klauzule
ORDER BY
vyžaduje, aby zásady indexování obsahovaly index pro seřazená pole. Modul runtime dotazu podporuje řazení podle názvu vlastnosti nebo vypočítaných vlastností. Modul runtime také podporuje víceORDER BY
vlastností. Pokud chcete spustit dotaz s víceORDER BY
vlastnostmi, definujte složený index pro seřazená pole. - Pokud můžou být
undefined
vlastnosti seřazené pro některé položky a chcete je načíst vORDER BY
dotazu, musíte tuto cestu explicitně zahrnout do indexu. Výchozí zásady indexování neumožňují načtení položek, ve kterých jeundefined
vlastnost řazení .