我不明白Neo4j中的WITH子句是做什么的。我读了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子句的作用。
答案 0 :(得分:11)
WITH
允许您将数据从查询的一部分传递到下一部分。无论您在WITH中列出什么,都将在下一个查询部分中提供。
你可以像在RETURN中一样使用聚合,SKIP,LIMIT,ORDER BY和WITH。
唯一的区别是您的表达式必须使用AS alias
获取别名才能在以后的查询部分中访问它们。
这意味着你可以链接查询部分,其中一个计算一些数据,下一个查询部分可以使用该计算数据。在你的情况下,它是GROUP BY and HAVING
在SQL中的内容,但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