sql语句start with connect by prior语法解析

sql语句start with connect by prior语法解析

START WITH CONNECT BY PRIOR用于组织结构查询、省市查询、多级菜单查询(商城系统),通过父级id查询所有的子级、以及通过当前id查询父级。

prior分两种放法:

1 放在子节点端 表示start with 指定的节点作为根节点,按照从上到下的顺序遍历

2 放在父节点端 表示start with指定的节点作为最底层节点,按照从下到上的顺序遍历

areacodeparentcodeaddressname
10121000河北省
10141012石家庄市
select * from address t start with t.areacode = ? connect by prior t.areacode = t.parentcode

以areacode为节点 ,向下查询所属的节点

select * from address t start with t.parentcode= ? connect by prior t.parentcode=t.areacode 

 以parentcode为节点 ,向上查询所属的节点

参考于:https://www.cnblogs.com/wangc04/p/6407559.html

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
"Connect by prior" 是一种在 Oracle 数据库用于处理层次结构数据的关键字。它可以通过一个 SELECT 语句来实现对数据进行树形结构的查询和遍历。下面是一个详细的用例: 假设我们有一个表格 department,其包含了公司的各个部门信息,每个部门都有一个上级部门。表格结构如下: ``` DEPARTMENT_ID DEPARTMENT_NAME PARENT_DEPARTMENT_ID 1 CEO Office NULL 2 HR Department 1 3 Finance Department 1 4 IT Department 1 5 Marketing 1 6 Recruitment 2 7 Training 2 8 Payroll 3 9 Accounts Payable 3 ``` 我们希望查询出所有部门的层次结构,并按照层次结构进行排序,输出结果如下: ``` DEPARTMENT_ID DEPARTMENT_NAME LEVEL 1 CEO Office 1 2 HR Department 2 6 Recruitment 3 7 Training 3 3 Finance Department 2 8 Payroll 3 9 Accounts Payable 3 4 IT Department 2 5 Marketing 2 ``` 我们可以使用以下 SQL 语句来实现这个查询: ``` SELECT department_id, department_name, LEVEL FROM department START WITH parent_department_id IS NULL CONNECT BY PRIOR department_id = parent_department_id ORDER SIBLINGS BY department_name; ``` 解释一下这个语句的含义: - START WITH:指定查询的起始点,这里是 parent_department_id IS NULL,即根节点为 CEO Office。 - CONNECT BY PRIOR:指定层次关系的连接条件,这里是 department_id = parent_department_id,表示当前行的 department_id 列等于上一层行的 parent_department_id 列。 - ORDER SIBLINGS BY:按照同一级别的兄弟节点进行排序,这里是按照 department_name 进行排序。 最终的查询结果,每一行包含了当前部门的 department_id、department_name,以及它在层次结构的 LEVEL(层级)信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值