You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 14:45:01