oracle 查询高级用法,oracle高级查询用法

层次化查询

有下图这样一张表,它记录的是员工的一些信息,m_id该员工的上级的id,例如James就是Ron的上级;

1e6c4517a2dec1fdcecf4ac60d7892ae.png

那么我们如何找出他们的层级关系。

oracle为我们提供的Select语句的Connect by和start with子句可以执行层次查询;

语法如下:

select [level], column, expression, ...

form table

[where where_caluase]

[start with start_condtion connect by prior prior_condition]

--level 是一个伪列,代表了第几层,对于本表的CEO,自然是第一层

--start_condtion 定了层次化查询的起点,当编写层次化查询时必须指定start with子句;

--prior_condition 定义了父行和子行之间的关系,当编写层次化查询时必须定义connect by prior子句

实例:

--employee_id 就是表中的id

--manager_id 就是表中的m_id

select level, employee_id, manager_id, first_name, last_name

from more_employees

start with employee_id =1

connect by prior employee_id = manager_id

order by level;

select first_name || ' ' || last_name as employee from more_employees

start with first_name = 'Susan'

connect by prior employee_id = manager_id;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值