如何解决将匹配结果分配给第二个变量并执行过滤
有没有一种方法可以将查询的结果复制到另一个变量,然后对第二个变量执行一些过滤,从而可能返回两个不同的结果?
我试图先保存一个变量的路径,然后将该结果分配给第二个变量,然后对该第二个变量执行WHERE,同时从origina查询(第一个变量)返回结果
MATCH
(a:Account {id : '3edcfba7-e95b-4d22-9793-e5f983ebde33'})
MATCH
(target:Vertex { id : '59255ad6-0397-4b2d-9e69-6999131cea16'})
<-[:PARENT*]-
(a)
OPTIONAL MATCH
p=
(new_parent:Vertex {id : '3a63f643-f437-4415-b046-b324aa697f42'})
<-[:PARENT*]-
(a)
WITH
p,target,p AS child
WHERE
NONE(x IN nodes(child) WHERE x = target)
RETURN
p,child // this can return null
解决方法
您可以使用CASE
子句来生成child
变量。
例如:
MATCH
(target:Vertex { id : '59255ad6-0397-4b2d-9e69-6999131cea16'})
<-[:PARENT*]-
(a:Account {id : '3edcfba7-e95b-4d22-9793-e5f983ebde33'})
OPTIONAL MATCH
p=
(new_parent:Vertex {id : '3a63f643-f437-4415-b046-b324aa697f42'})
<-[:PARENT*]-
(a)
RETURN
p,target,CASE WHEN NONE(x IN NODES(p) WHERE x = target) THEN p END AS child
如果没有CASE
子句适用并且没有NULL
子句,则WHEN
子句将生成ELSE
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。