修改密码

请输入密码
请输入密码 请输入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

      复合查询

      概述

      线性查询语句

      在GQL中,线性查询语句指的是按顺序执行的查询,即依次处理每条语句,没有分支或条件逻辑。结果以直接、线性的方式返回。

      本例为一条线性查询,其中MATCHFILTERRETURN语句按线性顺序处理:

      MATCH (:User {_id: "U01"})-[:Follows]->(u:User)
      FILTER u.city = "New York"
      RETURN u
      

      <linear query statement> ::=
        [ <simple linear query statement> ] <result statement>
      
      <simple linear query statement> ::= <simple query statement>...
      
      <simple query statement> ::=
          <match statement>
        | <filter statement>
        | <let statement>
        | <for statement>
        | <order by statement>
        | <limit statement>
        | <skip statement>
        | <call statement>
      
      <result statement> ::= 
        <return statement> [ <order by statement> ] [ <skip statement> ] [ <limit statement> ]
      

      详情

      • 线性查询语句以结果语句结束,可以在此前包含简单查询语句的线性组合。

      复合查询语句

      复合查询语句将一系列线性查询语句通过查询连接词结合在一起。

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

      详情

      • 所有线性查询的RETURN语句中,列的数量、顺序和名称必须一致。
      • 线性查询语句生成的绑定表会合并。
      • 如果指定了集合运算符但未指定集合量词,则自动使用DISTINCT,对绑定表的记录执行去重。
      • 可在复合查询语句中使用不同的查询连接词。

      示例图集

      以下示例根据该图集运行:

      在空图集中运行以下语句创建示例图集:

      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 ALL将两个或多个线性查询的结果合并为一个结果集,并返回全部查询结果,不进行去重。

      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 ALL返回所有线性查询共有的结果集,不进行去重;未在每个查询中都出现的行会被过滤掉。

      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"}

      下例中,第一个线性查询的结果集包含一个null值,由于使用了OPTIONAL,所以不是空集:

      只要第一个查询结果有行存在,OTHERWISE就会返回其结果集,带有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
      C02
      C02
      U05
      U04
      U02
      请完成以下信息后可下载此书
      *
      公司名称不能为空
      *
      公司邮箱必须填写
      *
      你的名字必须填写
      *
      你的电话必须填写
      *
      你的电话必须填写