当前位置: 首页 > 知识库问答 >
问题:

Neo4j Cypher:基于另一个查询筛选查询结果

穆飞龙
2023-03-14

我正在尝试查找一个查询唯一的名称列表,并排除两个查询结果之间的共同名称。例如,我想要学生A、B和C所选课程的名称,并从该列表中排除学生D和E所选的课程。在这个问题的答案的帮助下(Neo4j Cypher:从结果中排除某些节点),我尝试了这个密码代码,它是有效的,但我得到的结果是节点。我希望它是一个名称列表,而不是节点。

Match (m:class)-[r]-(n:student) where n.name in ['aa','bb','cc']    
WITH COLLECT(m) AS EXCLUDED
MATCH  (m1:class)-[r1]-(n1:student) where n1.name in ['dd','ee'] 
WITH EXCLUDED, COLLECT(m1) AS included
RETURN FILTER(m1 IN included WHERE NOT m1 IN EXCLUDED)

非常感谢。

共有1个答案

连昊天
2023-03-14

您可以有另一个ANDUNWIND

Match (m:class)-[r]-(n:student) where n.name in ['aa','bb','cc']    
WITH COLLECT(m) AS EXCLUDED
MATCH  (m1:class)-[r1]-(n1:student) where n1.name in ['dd','ee'] 
WITH EXCLUDED, COLLECT(m1) AS included
WITH FILTER(m1 IN included WHERE NOT m1 IN EXCLUDED) as _results
UNWIND _results as results
RETURN results.name

注意:FILTER()在neo4j 3.5中被弃用,在4.0中被删除,有利于列表理解

 类似资料:
  • 我有两个表TABLE_A,列名为COLUMN1 COLUMN2 COLUMN3 COLUMN 4 COLUM5 abc def ghi jkl mno 123 456 789 001 121 TABLE_B列名为COLUMN6 COLUMN7,其数据为 专栏5 124 第4列bca 第3列aaa 列5 BBB 所以我将Table_A的列名作为Table_B中的数据 所以我想在一个查询中做这样的事情

  • 我看不到任何关于何时应该使用查询或过滤器或两者结合的描述。他们之间有什么区别?谁能解释一下吗?

  • 问题内容: 我有一个查询。现在,此查询当然返回一个结果集,我想要的是查询此查询的结果集,例如,我只希望上述查询具有唯一的名称。我应该提一下,我知道我可以在Query1中使用,但这只是一个示例,我的实际情况有些不同,我想知道的是是否可以查询上一个查询的结果集。我正在使用SQL Server 2012。 问题答案: 您可以使用该子句

  • 我想不出如何将这个查询转换为delete-statment。 从购物车中选择DISTINCT carts.id,Shows.Date 内部连接tickets.cart=carts.id上的票证 内部连接actseats.ticket=tickets.id上的actseats 内部连接对actseats.showact=showacts.id显示作用 内部联接显示在shows.id=showacts

  • 问题内容: 如果返回0行,那么我需要。是否可以在带有条件语句的单个MySQL查询中执行此操作? 编辑: 所有答案均有效,但前提是两个查询均从同一表(或具有相同列数的表)中选择。如果第二个查询应用于具有联接的其他表上怎么办? 让我写下我的查询以使问题更清楚: 第一: 如果第一个结果为空,则: 第二名: 如果返回第一个查询,我将使用第一个查询的行,否则将使用第二个查询。 问题答案: 从我刚刚进行的快速

  • 问题内容: 我需要检查(从同一张表)基于日期时间的两个事件之间是否存在关联。 一组数据将包含某些事件的结束日期时间,另一组数据将包含其他事件的开始日期时间。 如果第一个事件在第二个事件之前完成,那么我想将它们链接起来。 到目前为止,我有: 然后我加入他们: 然后,可以基于我的validation_check字段运行带有SELECT嵌套的UPDATE查询吗? 问题答案: 您实际上可以通过以下两种方式