9.2 Order by
- 9.2.1 Упорядочить узлы по свойству
- 9.2.2 Упорядочить узлы по множеству свойств
- 9.2.3 Упорядочить узлы в убывающем порядке
- 9.2.4 Порядок NULL
Для сортировки вывода используется предложение ORDER BY. Заметим, что нельзя сортировать по узлам и связям, а только по их свойствам.
Рис. 9.2 Граф
9.2.1 Упорядочить узлы по свойству
ORDER BY используется для сортировки вывода.
Запрос
MATCH (n) RETURN n ORDER BY n.name
Возвращает узлы, отсортированные по именам.
Таблица 9.10 Результат
n |
---|
Node[0]{name:"A",age:34,length:170} |
Node[1]{name:"B",age:34} |
Node[2]{name:"C",age:32,length:185} |
9.2.2 Упорядочить узлы по множеству свойств
Вы можете выполнить сортировку по множеству свойств, указав каждый идентификатор в предложении ORDER BY. Cypher выполнит сортировку результата по первому идентификатору, а при равенстве значений перейдет к следующему свойству в предложении ORDER BY и т.д.
Запрос
MATCH (n) RETURN n ORDER BY n.age, n.name
возвращает узлы, упорядоченные сначала по возрасту, а затем имени.
Таблица 9.11 Результат
n |
---|
Node[2]{name:"C",age:32,length:185} |
Node[0]{name:"A",age:34,length:170} |
Node[1]{name:"B",age:34} |
9.2.3 Сортировка узлов в убывающем порядке
Сортировка будет выполнена в обратном порядке, если добавить DESC[ENDING] после идентификатора, по которому выполняется сортировка.
Запрос
MATCH (n) RETURN n ORDER BY n.name DESC
Этот пример возвращает узлы, сортируя их по имени в обратном алфавитном порядке.
Таблица 9.12 Результат
n |
---|
Node[2]{name:"C",age:32,length:185} |
Node[1]{name:"B",age:34} |
Node[0]{name:"A",age:34,length:170} |
9.2.4 Порядок NULL
При сортировке результирующего набора по возрастанию NULL всегда будет идти в конце, и – в начале при сортировке по убыванию.
Запрос
MATCH (n) RETURN n.length, n ORDER BY n.length
Узлы возвращаются отсортированными по свойству length (длина), при этом узлы, не имеющие данного свойства, идут в конце.
Таблица 9.13 Результат
n.length | n |
---|---|
170 | Node[0]{name:"A",age:34,length:170} |
185 | Node[2]{name:"C",age:32,length:185} |
< null> | Node[1]{name:"B",age:34} |