level、connect by、rownum使用

本文介绍了Oracle数据库中使用startwith+connectby进行树状查询的方法,并通过具体例子展示了如何实现层级关系的数据检索。此外,还讲解了利用connectby进行循环查询的操作技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

--1、start with + connect by   -->一般用于构成树查询
--eg:
SELECT *
  FROM district
 WHERE del_flag = 0 AND (district_level_code IN (SELECT DISTINCT domain_key FROM domain_district_level) OR district_level_code IS NULL)
 START WITH district_id IN (SELECT district_id    --根节点开始的位置
                            FROM district                           WHERE parent_district_id IS NULL
                              OR parent_district_id = 0)
CONNECT BY PRIOR district_id = parent_district_id
 ORDER BY LEVEL, district_no;
--2、connect by 用于构成循环
select LEVEL FROM dual CONNECT BY LEVEL<=10;
SELECT ROWNUM FROM dual CONNECT BY ROWNUM <=10;
SELECT LEVEL  FROM dual CONNECT BY 1=1;  --会得到无穷数列.
SELECT ROWNUM  FROM dual CONNECT BY 1=1; --会得到无穷数列.

rownum与 level 一致,都是以connect by 后的数字范围为准。

select level from dual connect by level< 10;
select rownum from dual connect by rownum<  10;  --都能取到9

select level from dual connect by level<= 10;
select rownum from dual connect by rownum< =10; --都能取到10

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值