修改密码

请输入密码
请输入密码 请输入8-64长度密码 和 email 地址不相同 至少包括数字、大写字母、小写字母、半角符号中的 3 个
请输入密码
提交

修改昵称

当前昵称:
提交

申请证书

证书详情

Please complete this required field.

  • Ultipa Graph V4

Standalone

Please complete this required field.

Please complete this required field.

服务器的MAC地址

Please complete this required field.

Please complete this required field.

取消
申请
ID
产品
状态
核数
申请天数
审批时间
过期时间
MAC地址
申请理由
审核信息
关闭
基础信息
  • 用户昵称:
  • 手机号:
  • 公司名称:
  • 公司邮箱:
  • 地区:
  • 语言:
修改密码
申请证书

当前未申请证书.

申请证书
Certificate Issued at Valid until Serial No. File
Serial No. Valid until File

Not having one? Apply now! >>>

ProductName CreateTime ID Price File
ProductName CreateTime ID Price File

No Invoice

v5.0
搜索
    v5.0

      复合查询

      概述

      复合查询将多条线性查询通过查询连接词(UNIONEXCEPTINTERSECTOTHERWISE)结合在一起。

      <composite query statement> ::= 
        <linear query statement> <query conjunction> <linear query statement>
        [ { <query conjunction> <linear query statement> }... ]
      
      <query conjunction> ::=
          "UNION" [ "DISTINCT" | "ALL" ]
        | "EXCEPT" [ "DISTINCT" | "ALL" ]
        | "INTERSECT" [ "DISTINCT" | "ALL" ]
        | "OTHERWISE"
      

      详情

      • 所有<linear query statement>产生的查询结果会合并。因此,所有<linear query statement>中的RETURN语句的返回项数量、顺序和名称必须一致。
      • 如果指定运算符DISTINCT,所有返回项中的重复记录会被舍弃;如果指定ALL,则保留所有记录,不进行去重。没有明确指定DISTINCTALL时,默认应用DISTINCT
      • 一个复合查询中可使用不同的查询连接词。

      示例图

      CREATE GRAPH myGraph { 
        NODE User ({name string}),
        NODE Club (),
        EDGE Follows ()-[{}]->(),
        EDGE Joins ()-[{}]->()
      } PARTITION BY HASH(Crc32) SHARDS [1]
      

      INSERT (rowlock:User {_id:'U01', name:'rowlock'}),
             (brainy:User {_id:'U02', name:'Brainy'}),
             (purplechalk:User {_id:'U03', name:'purplechalk'}),
             (mochaeach:User {_id:'U04', name:'mochaeach'}),
             (lionbower:User {_id:'U05', name:'lionbower'}),
             (c01:Club {_id:'C01'}),
             (c02:Club {_id:'C02'}),
             (rowlock)-[:Follows]->(brainy),
             (brainy)-[:Follows]->(rowlock),
             (mochaeach)-[:Follows]->(brainy),
             (brainy)-[:Follows]->(purplechalk),
             (purplechalk)-[:Follows]->(brainy),
             (brainy)-[:Joins]->(c01),
             (lionbower)-[:Joins]->(c01),
             (mochaeach)-[:Joins]->(c02)
      

      UNION

      UNION合并两个或多个线性查询的结果集,并对结果进行去重。

      MATCH (n:Club) RETURN n
      UNION
      MATCH (n) RETURN n
      

      结果:n

      _id _uuid schema
      values
      C02 Sys-gen Club
      C01 Sys-gen Club
      U05 Sys-gen User {name: "lionbower"}
      U04 Sys-gen User {name: "mochaeach"}
      U03 Sys-gen User {name: "purplechalk"}
      U02 Sys-gen User {name: "Brainy"}
      U01 Sys-gen User {name: "rowlock"}

      UNION ALL

      UNION合并两个或多个线性查询的结果集,不进行去重。

      MATCH (n:Club) RETURN n
      UNION ALL
      MATCH (n) RETURN n
      

      结果:n

      _id _uuid schema
      values
      C02 Sys-gen Club
      C01 Sys-gen Club
      U05 Sys-gen User {name: "lionbower"}
      U04 Sys-gen User {name: "mochaeach"}
      U03 Sys-gen User {name: "purplechalk"}
      U02 Sys-gen User {name: "Brainy"}
      U01 Sys-gen User {name: "rowlock"}
      C02 Sys-gen Club
      C01 Sys-gen Club

      EXCEPT

      EXCEPT返回一个去重后的结果集,该结果集包含在第一个查询结果中存在、但在后续查询结果中不存在的记录。

      MATCH ({_id: "U02"})-(n) RETURN n
      EXCEPT
      MATCH ({_id: "U05"})-(n) RETURN n
      

      结果:n

      _id _uuid schema
      values
      U04 Sys-gen User {name: "mochaeach"}
      U03 Sys-gen User {name: "purplechalk"}
      U01 Sys-gen User {name: "rowlock"}

      EXCEPT ALL

      EXCEPT返回一个不去重的结果集,该结果集包含在第一个查询结果中存在、但在后续查询结果中不存在的记录。

      MATCH ({_id: "U02"})-(n) RETURN n
      EXCEPT ALL
      MATCH ({_id: "U05"})-(n) RETURN n
      

      结果:n

      _id _uuid schema
      values
      U01 Sys-gen User {name: "rowlock"}
      U03 Sys-gen User {name: "purplechalk"}
      U04 Sys-gen User {name: "mochaeach"}
      U03 Sys-gen User {name: "purplechalk"}
      U01 Sys-gen User {name: "rowlock"}

      INTERSECT

      INTERSECT返回一个去重后的结果集,该结果集包含所有线性查询结果共有的记录,没有在每个查询结果中都出现的记录会被舍弃。

      MATCH ({_id: "U01"})-(u:User) RETURN u
      INTERSECT
      MATCH ({_id: "U03"})-(u:User) RETURN u
      

      结果:u

      _id _uuid schema
      values
      U02 Sys-gen User {name: "Brainy"}

      INTERSECT ALL

      INTERSECT返回一个不去重的结果集,该结果集包含所有线性查询结果共有的记录,没有在每个查询结果中都出现的记录会被舍弃。

      MATCH ({_id: "U01"})-(u:User) RETURN u
      INTERSECT ALL
      MATCH ({_id: "U03"})-(u:User) RETURN u
      

      结果:u

      _id _uuid schema
      values
      U02 Sys-gen User {name: "Brainy"}
      U02 Sys-gen User {name: "Brainy"}

      OTHERWISE

      如果第一个查询有结果,OTHERWISE返回第一个查询的结果。如果第一个查询没有结果,则返回第二个查询的结果,以此类推,直至有非空结果集产生。

      MATCH ({_id: "U04"})<-[]-(u:User) RETURN u
      OTHERWISE
      MATCH ({_id: "U02"})<-[]-(u:User) RETURN u
      

      结果:u

      _id _uuid schema
      values
      U01 Sys-gen User {name: "rowlock"}
      U03 Sys-gen User {name: "purplechalk"}
      U04 Sys-gen User {name: "mochaeach"}

      本例中,由于使用了OPTIONAL,第一个线性查询返回null值:

      OPTIONAL MATCH ({_id: "U04"})<-[]-(u:User) RETURN u
      OTHERWISE
      MATCH ({_id: "U02"})<-[]-(u:User) RETURN u
      

      结果:

      u
      null

      重命名返回项

      可以使用关键词AS重命名返回项,确保所有线性查询的结果可以合并。

      MATCH ({_id: "C01"})<-(u) RETURN u.name, 1 AS Club
      UNION
      MATCH ({_id: "C02"})<-(u) RETURN u.name, 2 AS Club
      

      结果:

      u.name Club
      Brainy 1
      lionbower 1
      mochaeach 2

      使用不同的查询连接词

      MATCH (n:Club) RETURN n._id
      OTHERWISE
      MATCH (n) RETURN n._id
      UNION ALL
      MATCH (n)-[]->(:Club) RETURN n._id
      

      结果:

      n._id
      C01
      C02
      U05
      U04
      U02

      对多个返回项进行去重

      RETURN语句包含多个返回项时,DISTINCT对所有返回项的组合记录进行去重。

      MATCH (u1 {name: "rowlock"})-(u2:User) RETURN u1.name, u2.name
      UNION DISTINCT
      MATCH (u1 {name: "purplechalk"})-(u2:User) RETURN u1.name, u2.name
      

      结果:

      u1.name u2.name
      rowlock Brainy
      purplechalk Brainy

      可比较以下UNION ALL的返回结果:

      MATCH (u1 {name: "rowlock"})-(u2:User) RETURN u1.name, u2.name
      UNION ALL
      MATCH (u1 {name: "purplechalk"})-(u2:User) RETURN u1.name, u2.name
      

      结果:

      u1.name u2.name
      rowlock Brainy
      rowlock Brainy
      purplechalk Brainy
      purplechalk Brainy
      请完成以下信息后可下载此书
      *
      公司名称不能为空
      *
      公司邮箱必须填写
      *
      你的名字必须填写
      *
      你的电话必须填写
      *
      你的电话必须填写