6

我不明白 WITH 子句在 Neo4j 中的作用。我阅读了 The Neo4j Manual v2.2.2但对 WITH 子句不太清楚。例子不多。例如,我有下图,其中蓝色节点是足球队,黄色节点是他们的体育场。 在此处输入图像描述

我想找到两支或多支球队比赛的体育场。我找到了该查询并且它有效。

match (n:Team) -[r1:PLAYS]->(a:Stadium)
with a, count(*) as foaf
where foaf > 1
return a

count(*) 告诉我们匹配行的数量。但我不明白 WITH 子句的作用。

4

1 回答 1

15

WITH允许您将数据从查询的一部分传递到下一部分。您在 WITH 中列出的任何内容都将在下一个查询部分中可用。

您可以将聚合、SKIP、LIMIT、ORDER BY 与 WITH 一起使用,就像在 RETURN 中一样。唯一的区别是您的表达式必须获得一个别名,AS alias以便能够在以后的查询部分中访问它们。

这意味着您可以链接查询部分,其中一个计算一些数据,下一个查询部分可以使用该计算数据。在您的情况下,这就是GROUP BY and HAVINGSQL 中的内容,但 WITH 比这更强大。

这是另一个例子

match (n:Team) -[r1:PLAYS]->(a:Stadium)
with distinct a 
order by a.name limit 10
match (a)-[:IN_CITY]->(c:City)
return c.name
于 2015-06-07T23:30:59.450 回答