首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在合并和匹配之间需要WITH (第4行,第1列(偏移: 63))

在合并和匹配之间需要WITH (第4行,第1列(偏移: 63))
EN

Stack Overflow用户
提问于 2017-10-30 07:34:02
回答 1查看 2.5K关注 0票数 0

我试图使用CYPHER在NEO4J上创建一个简单的图表。

以下是查询:

代码语言:javascript
运行
复制
MERGE (nut:asset{name:'nut'})
MERGE (bolt:asset{name:'bolt'})

MATCH (nut:asset)
WITH nut,bolt
MERGE (nut:asset)-[:hasPart]->(washer:asset{name:'washer',domain:'tool'})

它使我犯了一个错误

代码语言:javascript
运行
复制
WITH is required between MERGE and MATCH (line 4, column 1 (offset: 63))
"MATCH (nut:asset)"
 ^

当我试图将查询更改为

代码语言:javascript
运行
复制
MERGE (nut:asset{name:'nut'})
MERGE (bolt:asset{name:'bolt'})

MERGE (nut:asset)-[:hasPart]->(washer:asset{name:'washer',domain:'tool'})

它说

代码语言:javascript
运行
复制
Can't create node `nut` with labels or properties here. The variable is already declared in this context

如何在此上下文中使用合并语句。我使用了来自Neo4j 链接的教程来构造我的查询。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-30 08:06:53

第一个错误是因为在创建两个节点之后,您直接使用了MATCH。查询是连续的,但是使用带有标签的MATCH将其分解为各个部分。为了保持连续性,您必须使用WITH

第二个错误是由于您两次使用相同的变量nut而导致的。

使用WITH,可以减少查询的基数和时间。

第一个查询可以这样编写:

代码语言:javascript
运行
复制
MERGE (nut:asset{name:'nut'}) 
with nut
MERGE (bolt:asset{name:'bolt'}) 
with nut,bolt
MERGE (nut)-[:hasPart]->(washer:asset{name:'washer',domain:'tool'})

第二个是:

代码语言:javascript
运行
复制
MERGE (nut:asset{name:'nut'})
MERGE (bolt:asset{name:'bolt'})

MERGE (nut)-[:hasPart]->(washer:asset{name:'washer',domain:'tool'})
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47010070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档