大家好我正在尝试编写一个包含2个列表的密码查询,然后我将区分它们。
在一天结束时,我需要实际运行一个MATCH查询以获取两个列表,我无法弄清楚如何构建它来工作。
因此,我需要运行以生成列表的两个查询是:
MATCH (Paper:Paper)<-[:WROTE]-(a:Author)
WHERE Paper.year > 2010 and Paper.year <2012
RETURN a
第二个问题与2010年至2011年和2012年至2013年的年度变化相同。
MATCH (Paper:Paper)<-[:WROTE]-(a:Author)
WHERE Paper.year > 2010 and Paper.year <2012
WITH a AS l1,
(Paper:Paper)<-[:WROTE]-(a:Author)
WHERE Paper.year > 2011 and Paper.year <2013
WITH a AS l2
RETURN [Author in l2 WHERE not(Author in l1)]
出于某种原因,我得到了一个错误(不足为奇) WITH中的表达式必须是别名(使用AS)(第5行,第1列(偏移量:102)) “(纸:纸)&LT; - [:WROTE] - (一:作者)”
任何帮助将不胜感激!
答案 0 :(得分:1)
错误的原因是您在第一个WITH子句的末尾有一个额外的逗号。
也就是说,收集结果而不是在查询之间保留所有结果行会更明智,因为您当前的查询不能将结果用作列表。
我们可以做的其他一些改进包括使用链式不等式:
MATCH (Paper:Paper)<-[:WROTE]-(a:Author)
WHERE 2010 < Paper.year < 2012
WITH collect(a) AS l1
MATCH (Paper:Paper)<-[:WROTE]-(a:Author)
WHERE 2011 < Paper.year < 2013
WITH l1, collect(a) AS l2
RETURN [Author in l2 WHERE not Author in l1] as authors