oracle level关键字

level 和 connect by ,start with 合在一起,一般是用来实现递归(树)查询。
connect by 子句定义表中的数据是如何相互联系的 
start with 子句定义树查询的初始起点
  level 表示查询深度(level 表示递归的层次)

PRIOR 和 START WITH 关键字是可选项 

PRIORY 运算符必须放置在连接关系的两列中某一个的前面。对于节点间的父子关系, PRIOR

运算符在一侧表示父节点,在另一侧表示子节点,从而确定查找树结构是的顺序是自顶向下还是 

自底向上。在连接关系中,除了可以使用列名外,还允许使用列表达式。 START WITH 子句为 

可选项,用来标识哪个节点作为查找树型结构的根节点。若该子句被省略,则表示所有满足查询 

条件的行作为根节点。 


《Oracle database 11g完全参考手册》十四章中的例子:
SQL> col Cow format a6;
SQL> col Bull format a6;
SQL> col Offspring format a30;
SQL> col   Sex format a3; 
SQL> select * from BREEDING order by Birthdate;

OFFSPRING       SEX COW   BULL BIRTHDATE
------------------------------ --- ------ ------ ------------
BETSY                           F   EVE     ADAM   02-1月 -00
POCO                           M   EVE     ADAM   15-7月 -00
GRETA                           F   EVE     BANDIT 12-3月 -01
MANDY                           F   EVE     POCO   22-8月 -02
CINDY                           F   EVE     POCO   09-2月 -03
NOVI                           F   BETSY   ADAM   30-3月 -03
GINNY                           F   BETSY   BANDIT 04-12月-03
DUKE                           M   MANDY   BANDIT 24-7月 -04
TEDDI                           F   BETSY   BANDIT 12-8月 -05
SUZY                           F   GINNY   DUKE   03-4月 -06
PAULA                           F   MANDY   POCO   21-12月-06

OFFSPRING       SEX COW   BULL BIRTHDATE
------------------------------ --- ------ ------ ------------
RUTH                           F   GINNY   DUKE   25-12月-06
DELLA                           F   SUZY   BANDIT 11-10月-08
ADAM       M
EVE       F
BANDIT       M

已选择16行。

以下三个查询可清楚地看出继承关系:
以母牛为线索,EVE处于最根的位置
SQL> select Cow,Bull,LPAD(' ',6*(Level-1))||Offspring As Offspring,Sex,Birthdate 
from BREEDING 
start with Offspring = 'EVE' 
connect by Cow = PRIOR Offspring;

COW     BULL   OFFSPRING     SEX BIRTHDATE
------ ------ ------------------------------ --- ------------
      EVE     F
EVE     ADAM         BETSY                     F   02-1月 -00
BETSY   BANDIT             GINNY               F   04-12月-03
GINNY   DUKE                     RUTH         F   25-12月-06
GINNY   DUKE                     SUZY         F   03-4月 -06
SUZY   BANDIT                         DELLA   F   11-10月-08
BETSY   ADAM               NOVI               F   30-3月 -03
BETSY   BANDIT             TEDDI               F   12-8月 -05
EVE     POCO         CINDY                     F   09-2月 -03
EVE     BANDIT       GRETA                     F   12-3月 -01
EVE     POCO         MANDY                     F   22-8月 -02

COW     BULL   OFFSPRING     SEX BIRTHDATE
------ ------ ------------------------------ --- ------------
MANDY   BANDIT             DUKE               M   24-7月 -04
MANDY   POCO               PAULA               F   21-12月-06
EVE     ADAM         POCO                     M   15-7月 -00

已选择14行。
以公牛为线索,BANDIT和BETSY处于根的位置,它们两者没有继承关系

SQL> select Cow,Bull,LPAD(' ',6*(Level-1))||Offspring As Offspring,Sex,Birthdate from BREEDING start with Offspring = 'BANDIT' connect by BULL = PRIOR Offspring;

COW     BULL   OFFSPRING     SEX BIRTHDATE
------ ------ ------------------------------ --- ------------
      BANDIT     M
SUZY   BANDIT       DELLA                     F   11-10月-08
MANDY   BANDIT       DUKE                     M   24-7月 -04
GINNY   DUKE               RUTH               F   25-12月-06
GINNY   DUKE               SUZY               F   03-4月 -06
BETSY   BANDIT       GINNY                     F   04-12月-03
EVE     BANDIT       GRETA                     F   12-3月 -01
BETSY   BANDIT       TEDDI                     F   12-8月 -05

已选择8行。
SQL> select Cow,Bull,LPAD(' ',6*(Level-1))||Offspring As Offspring,Sex,Birthdate from BREEDING start with Offspring = 'BETSY' connect by Cow = PRIOR Offspring;

COW     BULL   OFFSPRING     SEX BIRTHDATE
------ ------ ------------------------------ --- ------------
EVE     ADAM   BETSY                           F   02-1月 -00
BETSY   BANDIT       GINNY                     F   04-12月-03
GINNY   DUKE               RUTH               F   25-12月-06
GINNY   DUKE               SUZY               F   03-4月 -06
SUZY   BANDIT                   DELLA         F   11-10月-08
BETSY   ADAM         NOVI                     F   30-3月 -03
BETSY   BANDIT       TEDDI                     F   12-8月 -05

已选择7行。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值