2014-12-19 162 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

相關問題