ORDER BY (requête NoSQL)
S’APPLIQUE À : NoSQL
La clause ORDER BY
facultative spécifie l’ordre de tri des résultats retournés par la requête.
Syntaxe
ORDER BY <sort_specification>
<sort_specification> ::= <sort_expression> [, <sort_expression>]
<sort_expression> ::= {<scalar_expression> [ASC | DESC]} [ ,...n ]
Arguments
Description | |
---|---|
<sort_specification> |
Spécifie une propriété ou expression sur laquelle trier le jeu de résultats de requête. Une colonne de tri peut être spécifiée en tant qu’alias de nom ou de propriété. Plusieurs propriétés peuvent être spécifiées. Les noms de propriété doivent être uniques. La séquence des propriétés de tri dans la clause ORDER BY détermine l’organisation du jeu de résultats trié. Autrement dit, le jeu de résultats est trié par la première propriété, puis cette liste triée est triée par la deuxième propriété, et ainsi de suite. Les noms de propriétés référencés dans la clause ORDER BY doivent correspondre à une propriété dans la liste de sélection ou à une propriété définie dans la collection spécifiée dans la clause FROM sans ambiguïté. |
<sort_expression> |
Spécifie une ou plusieurs propriétés ou expressions sur lesquelles trier le jeu de résultats de requête. |
<scalar_expression> |
Expression représentant la valeur à calculer. |
ASC ou DESC |
Spécifie que les valeurs dans la colonne spécifiée doivent être triées par ordre croissant ou décroissant. ASC effectue le tri de la valeur la plus faible à la valeur la plus élevée. DESC effectue le tri de la valeur la plus élevée à la valeur la plus faible. Si cet argument n’est pas spécifié, ASC (croissant) est l’ordre de tri par défaut. Les valeurs null sont traitées comme les plus petites valeurs possibles. |
Notes
Pour plus d'informations sur les expressions scalaires, voir Expressions scalaires
Exemples
Pour les exemples de cette section, cet ensemble d’éléments de référence est utilisé. Chaque élément contient une propriété name
avec first
et last
sous-propriétés.
[
{
"name": {
"first": "Casey",
"last": "Jensen"
},
"team": "Human resources"
},
{
"name": {
"first": "Amari",
"last": "Rivera"
},
"team": "Human resources"
},
{
"name": {
"first": "Kayla",
"last": "Lewis"
},
"team": "Human resources"
}
]
Dans ce premier exemple, la ORDER BY
clause est utilisée pour trier un champ selon l’ordre de tri par défaut, croissant.
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"
}
]
Dans l’exemple suivant, l’ordre de tri est explicitement spécifié comme décroissant.
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"
}
]
Dans cet exemple final, les éléments sont triés à l’aide de deux champs, dans un ordre spécifique à l’aide d’un classement spécifié explicitement. Une requête qui trie à l’aide de deux champs ou plus nécessite un index composite.
SELECT VALUE {
firstName: e.name.first,
lastName: e.name.last
}
FROM
employees e
ORDER BY
e.name.last DESC,
e.name.first ASC
Notes
- Les requêtes avec
ORDER BY
retournent tous les éléments, y compris les éléments où la propriété de la clause ORDER BY n’est pas définie. En règle générale, vous ne pouvez pas à contrôler l’ordre dans lequel les différents typesundefined
apparaissent dans les résultats. Pour contrôler l’ordre de tri des valeurs non définies, attribuez une valeur arbitraire à l’une des propriétésundefined
pour vous assurer qu’elles trient avant ou après les valeurs définies. - La clause
ORDER BY
nécessite que la stratégie d’indexation comprenne un index pour les champs de tri. Le runtime de requête prend en charge le tri par rapport à un nom de propriété ou aux propriétés calculées. Le runtime prend également en charge plusieurs propriétésORDER BY
. Pour exécuter une requête avec plusieurs propriétésORDER BY
, définissez un index composite sur les champs de tri. - Si les propriétés en cours de tri peuvent être
undefined
pour certains éléments et que vous voulez les récupérer dans une requêteORDER BY
, vous devez inclure explicitement ce chemin d’accès dans l’index. La stratégie d’indexation par défaut n’autorise pas la récupération des éléments où la propriété de tri estundefined
.