亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > Oracle > 正文

oracle 樹查詢 語句

2024-08-29 13:56:32
字體:
來源:轉載
供稿:網友
格式:
SELECT column
FROM table_name
START WITH column=value
CONNECT BY PRIOR 父主鍵=子外鍵
select lpad(' ',4*(level-1))||name name,job,id,super from emp
start with super is null
connect by prior id=super
例子:
原始數據:select no,q from a_example2
NO NAME
---------- ------------------------------
001 a01
001 a02
001 a03
001 a04
001 a05
002 b01
003 c01
003 c02
004 d01
005 e01
005 e02
005 e03
005 e04
005 e05
需要實現得到結果是:
001 a01;a02;a03
002 b01
003 c01;c02
004 d01
005 e01;e02;e03;e04;e05
思路:
1、ORACLE8.1之后有個connect by 子句,取出整棵樹數據。
create table a_example1
(
no char(3) not null,
name varchar2(10) not null,
parent char(3)
)
insert into a_example1
values('001','老王',null)
insert into a_example1
values('101','老李',null)
insert into a_example1
values('002','大王1','001')
insert into a_example1
values('102','大李1','101')
insert into a_example1
values('003','大王2','001')
insert into a_example1
values('103','大李2','101')
insert into a_example1
values('003','小王1','002')
insert into a_example1
values('103','小李1','102')
NO ?。危粒停拧。校粒遥牛危?
001 老王
101 老李
002 大王1 001
102 大李1 101
003 大王2 001
103 大李2 101
003 小王1 002
103 小李1 102
//按照家族樹取數據
select * from a_example1
select level,sys_connect_by_path(name,'/') path
from a_example1
start with /*name = '老王' and*/ parent is null
connect by parent = prior no
結果:
1 /老王
2 /老王/大王1
3 /老王/大王1/小王1
2 /老王/大王2
1 /老李
2 /老李/大李1
3 /老李/大李1/小李1
2 /老李/大李2
按照上面思路,我們只要將原始數據做成如下結構:
NO NAME
001 a01
001 a01/a02
001 a01/a02/a03
001 a01/a02/a03/a04
001 a01/a02/a03/a04/a05
002 b01
003 c01
003 c01/c02
004 d01
005 e01
005 e01/e02
005 e01/e02/e03
005 e01/e02/e03/e04
005 e01/e02/e03/e04/e05
最后按NO分組,取最大的一個值即為所需的結果。
NO NAME
001 a01/a02/a03/a04/a05
002 b01
003 c01/c02
004 d01
005 e01/e02/e03/e04/e05
SQL語句:
select no,max(sys_connect_by_path(name,';')) result from
(select no,name,rn,lead(rn) over(partition by no order by rn) rn1
from (select no,name,row_number() over(order by no,name desc) rn from a_example2)
)
start with rn1 is null connect by rn1 = prior rn
group by no
語句分析:
1、 select no,name,row_number() over(order by no,name desc) rn from a_example2
按照NO升序排序,同時按照NAME降序排序,產生偽列,目的是要形成樹結構
NO ?。危粒停拧。遥?
001 a03 1
001 a02 2
001 a01 3
002 b01 4
003 c02 5
003 c01 6
004 d01 7
005 e05 8
005 e04 9
005 e03 10
005 e02 11
005 e01 12
2、select no,name,rn,lead(rn) over(partition by no order by rn) rn1
from ( select no,name,row_number() over(order by no,name desc) rn from a_example2)
生成家族譜,即子節點與父節點有對應關系,對應關系通過rn和 rn1。其中lead為上一條記錄的RN值
NO ?。危粒停拧。遥巍 。遥危薄?001 a03 1 2 --
說明:針對NO=001來說,其下一條記錄的RN=2 001 a02 2 3 --說明:針對NO=001來說,其下一條記錄的RN=3 001 a01 3  --說明:針對NO=001來說,其下一條記錄的RN IS NULL
002 b01 4 003 c02 5 6 003 c01 6 004 d01 7 005 e05 8 9 005 e04 9 10 005 e03 10 11 005 e02 11 12 005 e01 12
3、select no,sys_connect_by_path(name,';') result from
(select no,name,rn,lead(rn) over(partition by no order by rn) rn1
from ( select no,name,row_number() over(order by no,name desc) rn from a_example2))
start with rn1 is null connect by rn1 = prior rn
正式生成樹
NO  ?。遥牛樱眨蹋?
001 ;a01
001 ;a01;a02
001 ;a01;a02;a03
002 ;b01
005 ;e01
005 ;e01;e02
005 ;e01;e02;e03
005 ;e01;e02;e03;e04
005 ;e01;e02;e03;e04;e05
003 ;c01
003 ;c01;c02
004 ;d01
將上面結果按照NO分組,取result最大值即可,所以將上述語句改為
select no,max(sys_connect_by_path(name,';')) result from
(select no,name,rn,lead(rn) over(partition by no order by rn) rn1
from (select no,name,row_number() over(order by no,name desc) rn from a_example2)
)
start with rn1 is null connect by rn1 = prior rn
group by no
得到所需結果。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧洲亚洲女同hd| 亚洲va欧美va在线观看| 韩国一区二区电影| 国内精品久久久久久影视8| 色偷偷888欧美精品久久久| 97国产精品久久| 久久夜色精品国产欧美乱| 国产精品一区二区三区免费视频| 欧洲亚洲妇女av| 成人妇女淫片aaaa视频| 一本色道久久88精品综合| 国产精品久久久久久亚洲影视| 国内精品400部情侣激情| 日本国产一区二区三区| 欧美午夜片在线免费观看| 色婷婷av一区二区三区在线观看| 亚洲影影院av| 91chinesevideo永久地址| 欧美日韩一区免费| 亚洲综合精品伊人久久| 国产精品一区二区久久久久| 日韩av片免费在线观看| 最新的欧美黄色| 国产精品成人观看视频国产奇米| 欧美日韩激情视频8区| 成人中文字幕在线观看| 欧美有码在线观看| 精品亚洲精品福利线在观看| 亚洲欧洲一区二区三区在线观看| 91亚洲国产成人久久精品网站| 97精品一区二区三区| 中文字幕亚洲在线| 91精品视频免费观看| 91精品国产沙发| 欧美黑人一级爽快片淫片高清| 九色成人免费视频| 欧美日韩激情视频8区| 国产成人欧美在线观看| 九九久久精品一区| 亚洲欧美日韩天堂| 久久精品亚洲热| 久久久精品中文字幕| 欧美一区第一页| 欧美激情精品久久久久久蜜臀| 欧美亚州一区二区三区| 最近2019年手机中文字幕| 国产精品一区专区欧美日韩| 久久影院资源站| 亚洲第一天堂无码专区| 久久久免费高清电视剧观看| 精品国模在线视频| 精品国产欧美一区二区五十路| 国产精品日韩欧美综合| 亚洲精品一区av在线播放| 亚洲精品一区久久久久久| 久久99精品久久久久久噜噜| 亚洲色图色老头| 欧美大片第1页| 精品网站999www| 久99久在线视频| 超碰精品一区二区三区乱码| 久久久久久国产| 一本色道久久88亚洲综合88| 国产精品吊钟奶在线| 亚洲精品视频二区| 亚洲午夜未删减在线观看| 热久久视久久精品18亚洲精品| 欧美在线国产精品| 久久久伊人欧美| 国产成人精品一区二区| 国产精品九九久久久久久久| 欧洲精品久久久| 中文字幕日韩高清| 国产精品一区电影| www.欧美三级电影.com| 国内精品小视频在线观看| 色av中文字幕一区| 亚洲男人天堂网站| 亚洲人成在线免费观看| 伊是香蕉大人久久| 欧美成人激情在线| 亚洲精品成a人在线观看| 日韩成人在线电影网| 欧美日韩亚洲一区二区| 色多多国产成人永久免费网站| 日韩欧中文字幕| 午夜精品在线观看| 久久国产精品久久精品| 日韩福利在线播放| 91亚洲va在线va天堂va国| 少妇高潮久久77777| 亚洲在线视频福利| 精品国偷自产在线| 久久影院免费观看| 国产视频福利一区| 免费99精品国产自在在线| 久久中文字幕国产| 精品调教chinesegay| 国产精品视频1区| 精品亚洲一区二区| 国产一区二区黑人欧美xxxx| 九九九热精品免费视频观看网站| 91综合免费在线| 久久69精品久久久久久久电影好| 国产精品丝袜久久久久久高清| 欧美日韩精品中文字幕| 最近2019年好看中文字幕视频| 成人亚洲欧美一区二区三区| 国产裸体写真av一区二区| 国产精品丝袜高跟| 久久久欧美精品| 亚洲国产精品va| 97在线视频免费| 国产精品va在线| 亚洲成人在线视频播放| 亚洲在线第一页| 亚洲男人第一av网站| 95av在线视频| 亚洲精品久久久一区二区三区| 国产丝袜一区二区三区免费视频| 欧美有码在线视频| 亚洲欧美日韩精品久久奇米色影视| 亚洲精品福利在线观看| 精品久久久久久久久久久久久久| 国产精品自产拍在线观看中文| 国产精欧美一区二区三区| 国产精品美乳一区二区免费| 国产亚洲一区二区在线| 91精品视频免费观看| 成人午夜在线影院| 亚洲精品国产综合区久久久久久久| 亚洲一区二区自拍| 亚洲新中文字幕| 亚洲精品中文字幕女同| 日本中文字幕成人| 色妞欧美日韩在线| 国产精品91在线| 亚洲国产古装精品网站| 97在线看福利| 红桃av永久久久| 欧美天堂在线观看| 色午夜这里只有精品| 亚洲第一区在线| 国产亚洲福利一区| 欧美在线视频免费播放| 亚洲最大福利视频| 亚洲成人激情视频| 久久99精品国产99久久6尤物| 久久精品小视频| 亚洲国产精品久久精品怡红院| 4438全国亚洲精品在线观看视频| 7777精品久久久久久| 日韩成人在线网站| 亚洲精品日韩欧美| 日韩欧美一区二区三区久久| 久久99热精品这里久久精品| 欧美日韩精品在线视频| 91黑丝在线观看| 亚洲国产成人久久综合一区| 国产亚洲精品成人av久久ww| 91在线看www| 亚洲国产精品小视频| 日韩欧美999| 中文字幕日韩在线观看|