为什么Cypher的WITH子句需要显式携带变量才可后续引用?
Cypher查询报错原因说明
你遇到的报错是Cypher查询语言的WITH子句的变量传递规则导致的:
Cypher的WITH子句用于分割不同的查询阶段,只有在WITH中显式列出的变量,才会被传递到后续的查询阶段,未被列出的变量会被直接回收,无法在后续语句中引用。
你最初的查询写法:
match (n) with split(n.group," ") as array set n.gid=left(array[0],1)+left(array[1],1) return n.name, n.gid;
在WITH子句中只声明了要传递array这一个变量,前面MATCH匹配得到的节点变量n没有被加入到传递列表中,所以执行到SET子句时,系统找不到n的定义,就抛出了变量未定义的错误。
修改后的写法把n也加入了WITH的传递列表:
match (n) with n, split(n.group," ") as array set n.gid=left(array[0],1)+left(array[1],1) return n.name, n.gid;
此时n和array都会被传递到后续阶段,后续的SET和RETURN子句都可以正常引用n的属性,因此可以正常运行。
内容的提问来源于stack exchange,提问作者Ooker
相关产品推荐
相关产品推荐

