Neo4j cyhper将两列合并为一列

Neo4j cyhper将两列合并为一列,neo4j,cypher,Neo4j,Cypher,我找不到类似的帖子,所以如果你已经知道或者我的问题不合适,请告诉我 我有这个疑问 MATCH (t:Taxi {name:'Taxi1813'})<-[:ASSIGNED]-(u2:User)-[rd2:DROP_OFF]-> (g2:Grid)-[r:TO*1..2]-(g:Grid)<-[rd:DROP_OFF]-(u:User)-[:ASSIGNED]->(t) WHERE ID(u2) < ID(u) AND rd2.time >= '04:3

我找不到类似的帖子,所以如果你已经知道或者我的问题不合适,请告诉我

我有这个疑问

MATCH
  (t:Taxi {name:'Taxi1813'})<-[:ASSIGNED]-(u2:User)-[rd2:DROP_OFF]->
  (g2:Grid)-[r:TO*1..2]-(g:Grid)<-[rd:DROP_OFF]-(u:User)-[:ASSIGNED]->(t)
WHERE ID(u2) < ID(u) AND rd2.time >= '04:38' AND rd2.time <= '04:42'
WITH DISTINCT u2, g2, u, g, rd2, rd
MATCH p=shortestPath((g2)-[r:TO*1..2]-(g))
WITH rd2, rd,u2, g2, u, g, p, REDUCE(totalTime = 0, x IN RELATIONSHIPS(p) | totalTime + x.time) AS totalTime
WHERE totalTime <= 4
RETURN u2.name, u.name
是否有方法或功能将两列合并为一列并删除重复项

Users
User179
User177
UserTest

有什么建议吗?谢谢你

u2.name+u.name组合列表


您可以创建类似“where u2.name不等于u.name(语法不正确)”的内容。

您可以将两个集合合并为一个集合,然后只返回不同的项

WITH ['User179', 'User177'] AS list1
, ['UserTest', 'User179'] AS list2
UNWIND list1 + list2 AS item
RETURN DISTINCT item
或者,如果您使用的是APOC,则可以使用
APOC.coll.union()

WITH ['User179', 'User177'] AS list1
, ['UserTest', 'User179'] AS list2
RETURN apoc.coll.union(list1,list2)

顺便说一句:我想你想要的是
ID(u2)ID(u)
而不是
ID(u2)
。我要测试一下,让你知道,谢谢你的观察。差别可能很小。如果要确保
u
u2
不同,则需要进行更改。您当前的密码无法做到这一点。谢谢@Mvde的建议,我尝试了这个u2.name u.name返回u2.name+u.name作为用户。但是情况没有好转,可能是我错过了什么。但我是用前面的答案写的,谢谢你抽出时间,我希望能在下一篇帖子中看到你:)
WITH ['User179', 'User177'] AS list1
, ['UserTest', 'User179'] AS list2
RETURN apoc.coll.union(list1,list2)