14.3 WHERE

Это наиболее простая для понимания вещь – просто один и тот же зверь в обоих языках. Он фильтрует результирующие наборы /подграфы. Не все предикаты имеют свой эквивалент в другом языке, однако концепции аналогичны.

SQL-запрос

SELECT *
FROM "Person"
WHERE "Person".age > 35 AND "Person".hair = 'blonde'
NAMEIDAGEHAIR
Bridget240blonde

Cypher-запрос

START person=node:Person('name: *')
WHERE person.age > 35 AND person.hair = 'blonde'
RETURN person
person
Node[1]{name:"Bridget",id:2,age:40,hair:"blonde"}

14.4 RETURN

Это предложение SELECT в SQL. Мы просто поместили его в конце, поскольку это кажется более естественным – вы выполнили большую работу по сопоставлению и фильтрации и, наконец, возвращаете результат.

Запросы с агрегацией работают точно так же, как и в SQL, за исключением того, что нет явного предложения GROUP BY. Всё в предложении return, что не является агрегатной функцией, будет использоваться в качестве столбцов группировки.

SQL-запрос

SELECT "Person".name, count(*) C2
FROM "Person"
GROUP BY "Person".name
ORDER BY "Person".name
NAME C2
Anakin1
Bridget1

Cypher-запрос

START person=node:Person('name: *')
RETURN person.name, count(*)
ORDER BY person.name
person.namecount(*)
"Anakin"1
"Bridget"1

Order by одинаков в обоих языках — ORDER BY <выражение> ASC/DESC. Тут нет ничего особенного.

Предыдущая