2014-12-19 73 views
0

我有一个看起来像下面这样的暗号查询:neo4j cypher WITH - 如果第二个查询中不匹配,则返回来自第一个查询的数据?

MATCH (a)-[]->(b) 
WHERE (condition #1) 
WITH a, b 
MATCH (a)-[]->(c) 
WHERE (condition #2) 
RETURN a, b, c 

我的数据是这样的查询的第一部分将自动返回“A”和“B”。但是,如果第二个WHERE条件失败,查询将不返回数据。我预计“a”和“b”的数据为NULL,“c”我怎么能做到这一点?

谢谢。

+1

但要确保使用索引,标签和属性过滤,您可能还想使用'WITH distinct a,b'或'WITH a,collect(b)coll_b'来获取基数。 – 2014-12-21 02:51:40

+0

谢谢迈克尔。实际查询确实有节点标签。 – JeffA 2014-12-22 03:10:11

回答

6

在第二场比赛前加上OPTIONAL应该可以解决问题。

MATCH (a)-[]->(b) 
WHERE (condition #1) 
WITH a, b 
OPTIONAL MATCH (a)-[]->(c) 
WHERE (condition #2) 
RETURN a, b, c 
+0

谢谢@ zero323 – JeffA 2014-12-22 03:10:39

相关问题