语法错误:CREATE 和 MATCH 之间需要 WITH



我是密码查询的初学者。所以,我试图理解匹配和创造。以下是我目前对作者和这本书之间关系的定义:

MATCH (book1:Book1 {title: 'The Ones Who Walk Away From Omelas'})
MATCH (author1:Author1 {name: 'Ursula K. Le Guin'})
CREATE (author1) - [:IS_AUTHOR_OF] -> (book1)
MATCH (book2:Book2 {title: 'A Fire Upon the Deep'})
MATCH (author2:Author2 {name: 'Vernor Vinge'})
CREATE (author2) - [:IS_AUTHOR_OF] -> (book2)

但这给我带来了错误:

语法错误:CREATE 和 MATCH 之间需要 WITH

我已经看过这篇文章,但仍然无法解决这个问题。

这是我尝试过但仍然遇到相同错误的方法:

MATCH (author1:Author1 {name: 'Ursula K. Le Guin'})
MATCH (book1:Book1 {title: 'The Ones Who Walk Away From Omelas'})
WITH author1, book1
CREATE (author1) - [:IS_AUTHOR_OF] -> (book1)
MATCH (author2:Author2 {name: 'Vernor Vinge'})
MATCH (book2:Book2 {title: 'A Fire Upon the Deep'})
WITH author2, book2
CREATE (author2) - [:IS_AUTHOR_OF] -> (book2)

你会发现语法错误在 CREATEMATCH 之间WITH必需的。

WITH应该在第三行的CREATE和第五(第四?(行的MATCH之间。

需要 WITH 来链接、管道将结果从一个查询部分传送到下一个查询部分。如果这让您感到困惑,请不要担心。您可以在此处阅读更多内容。

由于您没有将任何结果从第一部分传递到第二部分,因此您不需要它,但它在语法上不正确。

可以在查询中添加 WITH,如下所示以删除错误。

MATCH (book1:Book1 {title: 'The Ones Who Walk Away From Omelas'})
MATCH (author1:Author1 {name: 'Ursula K. Le Guin'})
CREATE (author1) - [:IS_AUTHOR_OF] -> (book1)
WITH true as pass
MATCH (book2:Book2 {title: 'A Fire Upon the Deep'})
MATCH (author2:Author2 {name: 'Vernor Vinge'})
CREATE (author2) - [:IS_AUTHOR_OF] -> (book2)

或者,您可以按不同的顺序执行此操作并避免使用WITH,不同之处在于,如果这些书籍/作者中的任何一个不匹配,它将不会创建任何内容。

MATCH (author1:Author1 {name: 'Ursula K. Le Guin'})
MATCH (book1:Book1 {title: 'The Ones Who Walk Away From Omelas'})
MATCH (author2:Author2 {name: 'Vernor Vinge'})
MATCH (book2:Book2 {title: 'A Fire Upon the Deep'})
CREATE (author1) - [:IS_AUTHOR_OF] -> (book1)
CREATE (author2) - [:IS_AUTHOR_OF] -> (book2)

PS:看起来你用的是Book1和Book2,而不仅仅是Book,作者也一样。

最新更新