neo4j UNION

UNION将两个或多个查询的结果合并为一个结果集,该结果集包含属于联合中任何查询的所有行。

在使用 组合的所有查询中,列的数量和名称必须相同UNION

要保留所有结果行,请使用UNION ALL。仅使用UNION(或UNION DISTINCT) 将合并并从结果集中删除重复项。

如果中的任何查询UNION包含更新,则其中查询的顺序UNION是相关的。

之前的任何子句都UNION不能观察之后子句所做的写入UNION。之后的任何子句UNION都可以观察之前子句所做的所有写入UNION

有关详细信息,请参阅查询中的子句组成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

返回合并的结果,包括重复项。

表 1. 结果
姓名

Rows: 4

"Johnny Depp"

"Sarah Jessica Parker"

"Ed Wood"

"Ed Wood"

合并两个查询并删除重复项

通过不包括ALLUNION重复项将从组合结果集中删除。

询问
MATCH (n:Actor)
RETURN n.name AS name
UNION
MATCH (n:Movie)
RETURN n.title AS name

返回合并的结果,没有重复。

表 2. 结果
姓名

Rows: 3

"Johnny Depp"

"Sarah Jessica Parker"

"Ed Wood"

联合不同

在 5.19 中引入

还可以通过明确包括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

返回合并的结果,没有重复。

表 3. 结果
姓名

Rows: 3

"Johnny Depp"

"Sarah Jessica Parker"

"Ed Wood"

合并后处理

该子句可在子查询UNION中使用,以在返回最终输出之前进一步处理组合结果。例如,以下查询计算查询后返回的每个属性的出现次数。CALLnameUNION ALLCALL

询问
CALL {
  MATCH (a:Actor)
  RETURN a.name AS name
UNION ALL
  MATCH (m:Movie)
  RETURN m.title AS name
}
RETURN name, count(*) AS count
ORDER BY count
表 4. 结果
姓名数数

行:3

"Ed Wood"

2

"Johnny Depp"

1

"Sarah Jessica Parker"

1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北京橙溪 www.enwing.com

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值