后浪云OceanBase教程:OceanBase 层次查询

层次查询(Hierarchical Query)是一种具有特殊功能的查询语句,通过它能够将分层数据按照层次关系展示出来。分层数据是指关系表中的数据之间具有层次关系。这种关系在现实生活中十分常见,例如:

  • 组织架构中组长和组员之间的关系。

  • 企业中上下级部门之间的关系。

  • Web 网页中,页面跳转的关系。

语法


SELECT [level], column, expr... FROM table [WHERE condition] [ START WITH start_expression ]
CONNECT BY [NOCYCLE] { PRIOR child_expr = parent_expr | parent_expr = PRIOR child_expr }
[ ORDER SIBLINGS BY …] [ GROUP BY … ] [ HAVING … ] [ ORDER BY … ]

参数

参数

说明

LEVEL

节点的层次,是伪列,表示等级。由查询的起点开始算起为 1,依次类推。

CONNECT_BY_ISLEAF

当前数据行是否是层次关系中的叶子节点,是伪列,0表示不是,1表示是。

CONNECT_BY_ISCYCLE

当前数据行是否在循环中,是伪列,0表示不是,1表示是。

CONNECT_BY_ROOT运算符

CONNECT_BY_ROOT是一元运算符,表示参数中的列来自于层次查询的根节点,与一元的 + 和 – 具有相同的优先级。

condition

条件。

CONNECT BY

指明如何来确定父子关系,这里通常使用等值表达式,但其他表达式同样支持。

START WITH

指明层次查询中的根行(Root row)。

PRIOR 运算符

PRIOR 是一元运算符,表示参数中的列来自于父行(Parent row),与一元的 + 和 – 具有相同的优先级。

NOCYCLE

当指定该关键字时,即使返回结果中有循环仍旧可以返回,并可以通过 CONNECT_BY_ISCYCLE 虚拟列来指明哪里出现循环;否则,出现循环会给客户端报错。

ORDER SIBLINGS BY

指定同一个层级行之间的排列顺序。

执行流程

使用和实现层次查询最关键是要理解其执行流程,层次查询执行流程:

  1. 执行 FROM 后面的 SCAN 或 JOIN 操作;

  2. 根据 START WITH 和 CONNECT BY 的内容生成层次关系结果;

  3. 按照常规查询执行流程执行剩下的子句(例如 WHEREGROUPORDER BY……)对于 2 中生成层次关系的流程可以理解为:

  4. 根据 START WITH 中的表达式得到根行(Root rows)。

  5. 根据 CONNECT BY 中的表达式 选择每个根行(Root rows)的子行(Child rows)。

  6. 将 2 中生成的子行(Child rows)作为新的根行(Root rows)进一步生成子行(Child rows),周而复始直到没有新行生成。

示例

展示层次查询的使用,向表 emp中的 emp_idposition 和 mgr_id 列插入数据。执行以下语句:


CREATE TABLE emp(emp_id INT,position VARCHAR(50),mgr_id INT);
INSERT INTO emp VALUES (1,'全球经理',NULL);
INSERT INTO emp VALUES (2,'欧洲区经理',1);
INSERT INTO emp VALUES (3,'亚太区经理',1);
INSERT INTO emp VALUES (4,'美洲区经理',1);
INSERT INTO emp VALUES (5,'意大利区经理',2);
INSERT INTO emp VALUES (6,'法国区经理',2);
INSERT INTO emp VALUES (7,'中国区经理',3);
INSERT INTO emp VALUES (8,'韩国区经理',3);
INSERT INTO emp VALUES (9,'日本区经理',3);
INSERT INTO emp VALUES (10,'美国区经理',4);
INSERT INTO emp VALUES (11,'加拿大区经理',4);
INSERT INTO emp VALUES (12,'北京区经理',7);

通过上面的内容可以看见列 position 具有清晰的层次关系。树状结构如下:

是按照层次结构将结果展示出来,执行以下语句:


SELECT emp_id, mgr_id, position, level FROM emp
START WITH mgr_id IS NULL CONNECT BY PRIOR emp_id = mgr_id;

查询结果如下:


+--------+--------+-------------------+-------+
| EMP_ID | MGR_ID | POSITION          | LEVEL |
+--------+--------+-------------------+-------+
|      1 |    NULL| 全球经理           |     1 |
|      2 |      1 | 欧洲区经理         |     2 |
|      5 |      2 | 意大利区经理       |     3 |
|      6 |      2 | 法国区经理         |     3 |
|      3 |      1 | 亚太区经理         |     2 |
|      7 |      3 | 中国区经理         |     3 |
|     12 |      7 | 北京区经理         |     4 |
|      8 |      3 | 韩国区经理         |     3 |
|      9 |      3 | 日本区经理         |     3 |
|      4 |      1 | 美洲区经理         |     2 |
|     10 |      4 | 美国区经理         |     3 |
|     11 |      4 | 加拿大区经理       |     3 |
+--------+--------+-------------------+-------+

如果仅查询“亚太区”的层次结构,执行以下语句:


SELECT emp_id, mgr_id, position, level FROM emp START WITH position = '亚太区经理' CONNECT BY PRIOR emp_id = mgr_id;

查询结果如下:


+--------+--------+----------------+-------+
| EMP_ID | MGR_ID | POSITION       | LEVEL |
+--------+--------+----------------+-------+
|      3 |      1 | 亚太区经理      |     1 |
|      7 |      3 | 中国区经理      |     2 |
|     12 |      7 | 北京区经理      |     3 |
|      8 |      3 | 韩国区经理      |     2 |
|      9 |      3 | 日本区经理      |     2 |
+--------+--------+----------------+-------+

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/298916.html<

(0)
运维的头像运维
上一篇2025-05-23 04:05
下一篇 2025-05-23 04:06

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注