Partage via


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 types undefined 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és undefined 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és ORDER BY. Pour exécuter une requête avec plusieurs propriétés ORDER 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ête ORDER 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 est undefined.