ORDER BY (query NoSQL)
SI APPLICA A: NoSQL
La clausola facoltativa ORDER BY
specifica l'ordinamento dei risultati restituiti dalla query.
Sintassi
ORDER BY <sort_specification>
<sort_specification> ::= <sort_expression> [, <sort_expression>]
<sort_expression> ::= {<scalar_expression> [ASC | DESC]} [ ,...n ]
Argomenti
Descrizione | |
---|---|
<sort_specification> |
Specifica una proprietà o espressione in cui ordinare il set di risultati della query. Una colonna di ordinamento può essere specificata come alias di nome o di proprietà. È possibile specificare più proprietà. I nomi delle proprietà devono essere univoci. La sequenza delle proprietà di ordinamento nella clausola ORDER BY definisce l'organizzazione del set di risultati ordinato. Ovvero, il set di risultati viene ordinato in base alla prima proprietà e quindi l'elenco così ordinato viene ordinato in base alla seconda proprietà e così via. I nomi delle proprietà a cui si fa riferimento nella clausola ORDER BY devono corrispondere a una proprietà dell'elenco di selezione o a una proprietà definita nell'insieme specificato nella clausola FROM senza ambiguità. |
<sort_expression> |
Specifica una o più proprietà o espressioni in cui ordinare il set di risultati della query. |
<scalar_expression> |
Espressione che rappresenta il valore da calcolare. |
ASC oppure DESC |
Specifica che i valori nella colonna specificata devono essere ordinati in ordine crescente o decrescente. ASC consente di ordinare i valori dal più piccolo al più grande. DESC consente di ordinare i valori dal più grande al più piccolo. Se questo argomento non viene specificato, ASC (crescente) è l'ordinamento predefinito. null i valori vengono considerati come i valori più bassi possibili. |
Nota
Per altre informazioni sulle espressioni scalari, vedere Espressioni scalari
Esempi
Per gli esempi in questa sezione, viene usato questo set di riferimenti di elementi. Ogni elemento contiene una name
proprietà con first
le proprietà e 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"
}
]
In questo primo esempio, la ORDER BY
clausola viene usata per ordinare un campo in base all'ordinamento predefinito, crescente.
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"
}
]
In questo esempio successivo, l'ordinamento viene specificato in modo esplicito per essere decrescente.
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"
}
]
In questo esempio finale gli elementi vengono ordinati usando due campi, in un ordine specifico usando l'ordinamento specificato in modo esplicito. Una query che esegue l'ordinamento usando due o più campi richiede un indice composito.
SELECT VALUE {
firstName: e.name.first,
lastName: e.name.last
}
FROM
employees e
ORDER BY
e.name.last DESC,
e.name.first ASC
Osservazioni:
- Le query con
ORDER BY
restituiscono tutti gli elementi, inclusi gli elementi in cui la proprietà nella clausola ORDER BY non è definita. In genere, non è possibile controllare l'ordine in cui vengono visualizzati tipi diversiundefined
nei risultati. Per controllare l'ordinamento dei valori non definiti, assegnare qualsiasiundefined
proprietà un valore arbitrario per assicurarsi che vengano ordinati prima o dopo i valori definiti. - La
ORDER BY
clausola richiede che i criteri di indicizzazione includano un indice per i campi ordinati. Il runtime di query supporta l'ordinamento in base al nome di una proprietà o alle proprietà calcolate. Il runtime supporta anche piùORDER BY
proprietà. Per eseguire una query con piùORDER BY
proprietà, definire un indice composito nei campi ordinati. - Se le proprietà ordinate potrebbero essere
undefined
relative ad alcuni elementi e si desidera recuperarle in unaORDER BY
query, è necessario includere in modo esplicito questo percorso nell'indice. Il criterio di indicizzazione predefinito non consente il recupero degli elementi in cui la proprietà sort èundefined
.
Contenuto correlato
- Clausola
GROUP BY
- Clausola
OFFSET LIMIT