我希望能够根据传入的ID的结果执行特定的MATCH
语句,并忽略其他MATCH
语句。
假设传递的 ID 是2
。我假设因为它已经运行了第一个查询并且没有匹配任何内容,所以它将 n2 作为 NULL 返回,而不是转到第二个 MATCH 语句。我可能错了。如何解决我的问题?任何帮助都会很棒。
MATCH (n: nodeA)
OPTIONAL MATCH (n {id = 1})-[r]-(n2)
OPTIONAL MATCH (n {id = 2})--(n2)
WITH n2
RETURN n2
更新了答案...
OPTIONAL MATCH (n0:nodeA {id: 1})-[r]-(n2)
WITH collect(n2) AS first_match
OPTIONAL MATCH (n1:nodeA {id: 2})--(n2)
RETURN first_match + collect(n2) AS matches
您可以只执行两个可选匹配项并返回两个结果集的并集。
OPTIONAL MATCH (n:nodeA {id: 1})-[r]-(n2)
RETURN n2
UNION
OPTIONAL MATCH (n:nodeA {id: 2})--(n2)
RETURN n2