9.2 Order by

  1. 9.2.1 Упорядочить узлы по свойству
  2. 9.2.2 Упорядочить узлы по множеству свойств
  3. 9.2.3 Упорядочить узлы в убывающем порядке
  4. 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.lengthn
170Node[0]{name:"A",age:34,length:170}
185Node[2]{name:"C",age:32,length:185}
< null>Node[1]{name:"B",age:34}

Предыдущая | Следующая