首页 > 编程笔记 > MySQL笔记 阅读:4

Cypher UNION语句用法详解(附带实例)

UNION 语句的作用是将两个及以上的查询结果合并为一个结果集。在使用 UNION 语句时,多个查询结果中列的数量和列名必须相同,如果不相同则会显异常。

在合并的过程中,如果要保留所有结果行,则可以使用 UNION ALL 语句。如果要删除结果集中的重复项,则可以使用 UNION 语句,具体示例如下。

下面先删除图中的所有节点和关系,代码如下:
MATCH (n) DETACH DELETE n
上述代码会删除所有的节点及关系,读者在使用过程中一定要谨慎。

然后创建节点,代码如下:
CREATE (Anthony:Actor{name:"Anthony Hopkins"})
CREATE (Helen:Actor{name:"Helen Mirren"})
CREATE (Hitchcock:Actor{name:"Hitchcock"})
CREATE (:Movie{title:"Hitchcock"})

最后创建关系,代码如下:
MATCH (Anthony:Actor{name:"Anthony Hopkins"}),(Helen:Actor{name:"Helen Mirren"}), (m:Movie{title:"Hitchcock"})
CREATE (Anthony) - [:KNOWS] -> (Helen)
CREATE (Anthony) - [:ACTS_IN] -> (m)
CREATE (Helen) - [:ACTS_IN] -> (m)
节点和关系所构成的图如下图所示:


图 1 节点和关系构成的图(UNION语句)

UNION合并两个查询并保留重复值

UNION ALL 语句可以用于合并两个查询的结果。在合并过程中,重复的结果会被保留。代码如下:
MATCH (n:Actor)
RETURN n.name AS name
UNION ALL
MATCH (n:Movie)
RETURN n.title AS name
返回值如下:
│"name"           │
│"Anthony Hopkins"│
│"Helen Mirren"   │
│"Hitchcock"      │
│"Hitchcock"      │
可以看出,UNION ALL 语句两组结果中的公共行进行组合,并返回到一组结果中。返回结果中允许存在重复值。

UNION合并两个查询并删除重复值

UNION 语句可以用于合并两个查询的结果。在合并过程中,重复的结果会被删除。代码如下:
MATCH (n:Actor)
RETURN n.name AS name
UNION
MATCH (n:Movie)
RETURN n.title AS name
返回值如下:
│"name"           │
│"Anthony Hopkins"│
│"Helen Mirren"   │
│"Hitchcock"      │

相关文章