Начало работы
Подключение
Тесты производительности
Развёртывание
Использование данных
Загрузка данных
Миграция данных
Запрос данных
Управление кластерами
Обновление
Глобальное обслуживание
Масштабирование
Мониторинг
Безопасность
Лучшие практики
Технические принципы
Типы данных
Хранилище
Исполняющий движок
Потоковая обработка (Domino)
MARS3 Индексы
Расширения
Расширенные функции
Расширенный запрос
Федеративные запросы
Grafana
Резервное копирование и восстановление
Аварийное восстановление
Графовая база данных
Введение
Предложения
Функции
Расширенные темы
Руководство
Настройка производительности
Устранение неполадок
Инструменты
Параметры конфигурации
SQL-команда
Часто задаваемые вопросы
Предложение ORDER BY следует за WITH. Оно определяет порядок сортировки выходных данных.
Обратите внимание: вершины и рёбра нельзя сортировать напрямую — сортировка должна выполняться по их свойствам. ORDER BY использует сравнение значений для упорядочения результатов. Подробнее см. Сортировка и сравнение значений.
Что касается области видимости переменных, ORDER BY следует особым правилам в зависимости от того, является ли предшествующий проекционный оператор (RETURN или WITH) агрегирующим или использует DISTINCT:
DISTINCT, доступны только переменные, явно указанные в ней. DISTINCT), доступны также переменные, существовавшие до проекции. Наконец, агрегатные выражения, не перечисленные явно в проекционном предложении, не могут использоваться в ORDER BY. Это правило гарантирует, что ORDER BY влияет исключительно на порядок строк в результате — но не на его состав.
Примечание!
В YMatrix AGEORDER BYне гарантирует глобально упорядоченные результаты. Следовательно, комбинацияORDER BY+LIMITне гарантирует получение глобально первых N строк.
Чтобы обеспечить глобальную сортировку, поместите передORDER BYпредложениеWITH:
RETURN p ORDER BY p.age LIMIT 3: каждая сегментная единица сортирует локально и возвращает свои топ-3 строки; итоговый результат не гарантирует глобальные топ-3 строки.WITH p ORDER BY p.age LIMIT 3 RETURN p:WITHинициирует перемещение данных (узел Motion), что позволяет выполнить глобальную сортировку до примененияLIMIT.
Используйте ORDER BY, чтобы упорядочить выходные данные.
SELECT *
FROM cypher('graph_name', $$
MATCH (n)
WITH n.name AS name, n.age AS age
ORDER BY n.name
RETURN name, age
$$) AS (name agtype, age agtype);
Возвращает вершины, отсортированные по свойству name.
| name | age |
|---|---|
"A" |
34 |
"B" |
34 |
"C" |
32 |
| (1 строка) |
Перечислите несколько переменных в предложении ORDER BY, чтобы выполнить сортировку по нескольким свойствам. Cypher сначала сортирует по самой левой переменной; при равенстве значений переходит к следующей переменной в списке и т.д.
SELECT *
FROM cypher('graph_name', $$
MATCH (n)
WITH n.name AS name, n.age AS age
ORDER BY n.age, n.name
RETURN name, age
$$) AS (name agtype, age agtype);
Возвращает вершины, отсортированные сначала по age, затем по name.
| name | age |
|---|---|
"C" |
32 |
"A" |
34 |
"B" |
34 |
| (1 строка) |
Добавьте DESC или DESCENDING после имени сортируемой переменной, чтобы изменить направление сортировки на убывающее.
SELECT *
FROM cypher('graph_name', $$
MATCH (n)
WITH n.name AS name, n.age AS age
ORDER BY n.name DESC
RETURN name, age
$$) AS (name agtype, age agtype);
Возвращает вершины, отсортированные по name в убывающем порядке.
| name | age |
|---|---|
"C" |
32 |
"B" |
34 |
"A" |
34 |
| (3 строки) |
При сортировке результирующего набора:
NULL всегда находятся в конце. NULL всегда находятся в начале.SELECT *
FROM cypher('graph_name', $$
MATCH (n)
WITH n.name AS name, n.age AS age, n.height
ORDER BY n.height
RETURN name, age, height
$$) AS (name agtype, age agtype, height agtype);
Возвращает вершины, отсортированные по свойству height; вершины без этого свойства располагаются в конце.
| name | age | |
|---|---|---|
"A" |
34 |
170 |
"C" |
32 |
185 |
"B" |
34 |
<NULL> |
| (3 строки) |