日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

oracle 得到一个树,Related to Oracle SQL 关于树形数据的遍历

發布時間:2025/3/12 数据库 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle 得到一个树,Related to Oracle SQL 关于树形数据的遍历 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

有這樣一組數據:

ID??????COL1????PARID???HAS_CHILD

001?a???0???1

002?b???0???1

003?c???001?0

004?d???001?0

005?e???002?1

006?f???002?0

007?g???005?0

008?h???005?0

希望以中序遍歷的方式得出以下遍歷結果:

001?a???0???1

003?c???001?0

004?d???001?0

002?b???0???1

005?e???002?1

007?g???005?0

008?h???005?0

006?f???002?0

005?e???002?1

007?g???005?0

008?h???005?0

這其實是多棵樹,001,002,以及002的子樹005,得到的是他們的遍歷結果:

使用的SQL語句如下:

SELECTid, col1, parid,?has_child? FROM test t

CONNECT BY?PRIOR id = parid -- 這句的作用是確定連接條件,PRIOR?放在ID前是從根開始遍歷,如果PRIOR?放在parid前則是從根進行遍歷,但是這實際上只能遍歷從葉節點往上的樹的一枝的數據。START WITH?has_child?= 1? -- 這句的作用是確定符合根節點的條件

ORDER SIBLINGS BY?id -- 對同一父節點下的子節點進行排序,如果只是使用普通的order會使結果又變成一個普通的沒有層次的數據。

建表SQL:

-- Create table

create table TEST

(

ID??????? VARCHAR2(20),

COL1????? VARCHAR2(20),

PARID???? VARCHAR2(20),

HAS_CHILD NUMBER

)

tablespace USERS

pctfree 10

initrans 1

maxtrans 255

storage

(

initial 64K

minextents 1

maxextents unlimited

);

測試數據SQL:

insert into test (ID, COL1, PARID, HAS_CHILD, ROWID)

values ('001', 'a', '0', 1, '');

insert into test (ID, COL1, PARID, HAS_CHILD, ROWID)

values ('002', 'b', '0', 1, '');

insert into test (ID, COL1, PARID, HAS_CHILD, ROWID)

values ('003', 'c', '001', 0, '');

insert into test (ID, COL1, PARID, HAS_CHILD, ROWID)

values ('004', 'd', '001', 0, '');

insert into test (ID, COL1, PARID, HAS_CHILD, ROWID)

values ('005', 'e', '002', 1, '');

insert into test (ID, COL1, PARID, HAS_CHILD, ROWID)

values ('006', 'f', '002', 0, '');

insert into test (ID, COL1, PARID, HAS_CHILD, ROWID)

values ('007', 'g', '005', 0, '');

insert into test (ID, COL1, PARID, HAS_CHILD, ROWID)

values ('008', 'h', '005', 0, '');

總結

以上是生活随笔為你收集整理的oracle 得到一个树,Related to Oracle SQL 关于树形数据的遍历的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。