Vue d’ensemble
L'instruction ORDER BY
vous permet de trier la table de travail actuelle en fonction d'une liste de spécifications.
<order by statement> ::=
"ORDER BY" <sort specification> [ { "," <sort specification> }... ]
<sort specification> ::=
<value expression> [ <ordering specification> ] [ <null ordering> ]
<ordering specification> ::= "ASC" | "DESC"
<null ordering> ::= "NULLS FIRST" | "NULLS LAST"
Détails
- Lorsqu'aucune spécification d'ordre n'est fournie,
ASC
(croissant) est appliqué par défaut. Pour inverser l'ordre, vous pouvez explicitement utiliser le mot-cléDESC
(décroissant). NULLS FIRST
etNULLS LAST
peuvent être utilisés pour contrôler si les valeursnull
apparaissent avant ou après les valeurs non nulles lors du classement du résultat. Lorsque l'ordre null n'est pas explicitement spécifié :NULLS LAST
est appliqué par défaut lorsque l'ordre effectif est croissantASC
.NULLS FIRST
est appliqué par défaut lorsque l'ordre effectif est décroissantDESC
.
Exemple de Graph
Les exemples suivants sont exécutés sur ce graph :
Pour créer ce graph, exécutez la requête suivante sur un graph vide :
INSERT (p1:Paper {_id:'P1', title:'Efficient Graph Search', score:6, author:'Alex', publisher:'PulsePress'}),
(p2:Paper {_id:'P2', title:'Optimizing Queries', score:9, author:'Alex'}),
(p3:Paper {_id:'P3', title:'Path Patterns', score:7, author:'Zack', publisher:'BrightLeaf'}),
(p1)-[:Cites {weight:2}]->(p2),
(p2)-[:Cites {weight:1}]->(p3)
Tri par Property
La table peut être triée par les valeurs d'une property spécifiée.
MATCH (n:Paper)
ORDER BY n.score
RETURN n.title, n.score
Résultat :
n.title | n.score |
---|---|
Efficient Graph Search | 6 |
Path Patterns | 7 |
Optimizing Queries | 9 |
Tri par Variable de l'Élément
Lorsqu'une variable d'élément est spécifiée, la table est triée sur le _uuid
des nodes ou edges.
MATCH (n:Paper)
RETURN n.title, element_id(n) ORDER BY n
Résultat :
n.title | element_id(n) |
---|---|
Optimizing Queries | 8718971077612535810 |
Efficient Graph Search | 8791028671650463745 |
Path Patterns | 12033620403357220867 |
Tri par Expression
La table peut être triée par les résultats produits par une expression.
MATCH p = (:Paper)->{1,2}(:Paper)
RETURN p, path_length(p) AS length ORDER BY length DESC
Résultat :
p | length |
---|---|
(:Paper {_id: "P1", score: 6, title: "Efficient Graph Search", author: "Alex", publisher: "PulsePress"})-[:Cites {weight: 2}]->(:Paper {_id: "P2", score: 9, title: "Optimizing Queries", author: "Alex", publisher: null})-[:Cites {weight: 1]->(:Paper {_id: "P3", score: 7, title: "Path Patterns", author: "Zack", publisher: "BrightLeaf"}) | 2 |
(:Paper {_id: "P1", score: 6, title: "Efficient Graph Search", author: "Alex", publisher: "PulsePress"})-[:Cites {weight: 2]->(:Paper {_id: "P2", score: 9, title: "Optimizing Queries", author: "Alex", publisher: null}) | 1 |
(:Paper {_id: "P2", score: 9, title: "Optimizing Queries", author: "Alex", publisher: null})-[:Cites {weight: 1]->(:Paper {_id: "P3", score: 7, title: "Path Patterns", author: "Zack", publisher: "BrightLeaf"}) | 1 |
Tri à Niveaux Multiples
Lorsqu'il y a plusieurs spécifications, la table est triée par la première spécification listée, et pour les valeurs égales, on passe à la spécification suivante, et ainsi de suite.
MATCH (n:Paper)
RETURN n.title, n.author, n.score
ORDER BY n.author DESC, n.score
Résultat :
n.title | n.author | n.score |
---|---|---|
Path Patterns | Zack | 7 |
Efficient Graph Search | Alex | 6 |
Optimizing Queries | Alex | 9 |
Rejet et Retenue des Enregistrements Après le Tri
Vous pouvez utiliser les instructions SKIP
et LIMIT
en combinaison avec l'instruction ORDER BY
pour sauter un nombre spécifié d'enregistrements du début de la table et pour limiter le nombre d'enregistrements retenus.
Cette requête renvoie les titres des deux articles avec les deuxièmes et troisièmes meilleurs scores :
MATCH (n:Paper)
RETURN n.title, n.score
ORDER BY n.score DESC SKIP 1 LIMIT 2
Résultat :
n.title | n.score |
---|---|
Path Patterns | 7 |
Efficient Graph Search | 6 |
Ordre des Nuls
NULLS FIRST
et NULLS LAST
peuvent être utilisés pour contrôler si les valeurs null
apparaissent avant ou après les valeurs non nulles lors du classement du résultat.
Cette requête renvoie les titres des deux articles avec les deuxièmes et troisièmes meilleurs scores :
MATCH (n:Paper)
RETURN n.title, n.publisher
ORDER BY n.publisher NULLS FIRST
Résultat :
n.title | n.score |
---|---|
Optimizing Queries | null |
Path Patterns | BrightLeaf |
Efficient Graph Search | PulsePress |