UNION
将两个或多个查询的结果合并为一个结果集,该结果集包含属于联合中任何查询的所有行。
在使用 组合的所有查询中,列的数量和名称必须相同UNION
。
要保留所有结果行,请使用UNION ALL
。仅使用UNION
(或UNION DISTINCT
) 将合并并从结果集中删除重复项。
如果中的任何查询 之前的任何子句都 有关详细信息,请参阅查询中的子句组成UNION。 |
示例图
下图用于以下示例:
要重新创建图表,请针对空的 Neo4j 数据库运行以下查询:
CREATE (johnny:Actor {name: 'Johnny Depp'}),
(sarah:Actor {name: 'Sarah Jessica Parker'}),
(ed:Actor&Director {name: 'Ed Wood'}),
(edWoodMovie:Movie {title: 'Ed Wood'}),
(johnny)-[:ACTED_IN]->(edWoodMovie),
(sarah)-[:ACTED_IN]->(edWoodMovie)
合并两个查询并保留重复项
使用 来合并两个查询的结果UNION ALL
。
MATCH (n:Actor)
RETURN n.name AS name
UNION ALL
MATCH (n:Movie)
RETURN n.title AS name
返回合并的结果,包括重复项。
姓名 |
---|
|
|
|
|
|
合并两个查询并删除重复项
通过不包括ALL
,UNION
重复项将从组合结果集中删除。
MATCH (n:Actor)
RETURN n.name AS name
UNION
MATCH (n:Movie)
RETURN n.title AS name
返回合并的结果,没有重复。
姓名 |
---|
|
|
|
|
联合不同
还可以通过明确包括DISTINCT
在 中来删除重复项UNION
。该UNION DISTINCT
关键字是作为 Cypher ®的GQL 一致性的一部分引入的,使用它的功能与使用简单的 相同UNION
。
MATCH (n:Actor)
RETURN n.name AS name
UNION DISTINCT
MATCH (n:Movie)
RETURN n.title AS name
返回合并的结果,没有重复。
姓名 |
---|
|
|
|
|