oracle SQL遞歸的使用詳解
更新時間:2013年05月30日 10:10:05 作者:
本篇文章是對oracle SQL遞歸的使用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
oracle數(shù)據(jù)庫中如果需要使用SQL遞歸語句,應(yīng)該怎么寫呢?下面就為您介紹一個oracle中使用SQL遞歸語句的例子,供您參考。
例子:
pid id
a b
a c
a e
b b1
b b2
c c1
e e1
e e3
d d1
指定pid=a,選出
a b
a c
a e
b b1
b b2
c c1
e e1
e e3
SQL語句:select parent,child from test start with pid='a'
connect by prior id=pid
Oracle SQL遞歸查詢語句:
1、表機(jī)構(gòu)
SQL> desc comm_org_subjection
Name Null? Type
----------------------------------------- -------- ----------------------
ORG_SUBJECTION_ID NOT NULL VARCHAR2(32) 子鍵
ORG_ID NOT NULL VARCHAR2(32)
FATHER_ORG_ID NOT NULL VARCHAR2(32) 父鍵
LOCKED_IF NOT NULL VARCHAR2(1)
START_DATE NOT NULL DATE
END_DATE DATE
EDITION_NAMEPLATE NUMBER(8)
CODE_AFFORD_IF VARCHAR2(1)
CODE_AFFORD_ORG_ID NOT NULL VARCHAR2(32)
CODING_SHOW_ID NUMBER(8)
BSFLAG VARCHAR2(1)
MODIFI_DATE DATE
CREATOR_ID VARCHAR2(32)
CREATE_DATE DATE
CREATOR VARCHAR2(35)
2、遞歸查找父結(jié)點(diǎn) org_id為C6000000000001下的所有子結(jié)點(diǎn):
select * from comm_org_subjection a
start with a.org_id='C6000000000001'
connect by prior a.org_subjection_id=a.father_org_id
3、遞歸查找子結(jié)點(diǎn) org_id為C6000000000001下的所有父結(jié)點(diǎn):
select org_id from comm_org_subjection a
start with a.org_id='C6000000000001'
connect by prior a.father_org_id=a.org_subjection_id
例子:
復(fù)制代碼 代碼如下:
pid id
a b
a c
a e
b b1
b b2
c c1
e e1
e e3
d d1
指定pid=a,選出
a b
a c
a e
b b1
b b2
c c1
e e1
e e3
SQL語句:select parent,child from test start with pid='a'
connect by prior id=pid
Oracle SQL遞歸查詢語句:
1、表機(jī)構(gòu)
復(fù)制代碼 代碼如下:
SQL> desc comm_org_subjection
Name Null? Type
----------------------------------------- -------- ----------------------
ORG_SUBJECTION_ID NOT NULL VARCHAR2(32) 子鍵
ORG_ID NOT NULL VARCHAR2(32)
FATHER_ORG_ID NOT NULL VARCHAR2(32) 父鍵
LOCKED_IF NOT NULL VARCHAR2(1)
START_DATE NOT NULL DATE
END_DATE DATE
EDITION_NAMEPLATE NUMBER(8)
CODE_AFFORD_IF VARCHAR2(1)
CODE_AFFORD_ORG_ID NOT NULL VARCHAR2(32)
CODING_SHOW_ID NUMBER(8)
BSFLAG VARCHAR2(1)
MODIFI_DATE DATE
CREATOR_ID VARCHAR2(32)
CREATE_DATE DATE
CREATOR VARCHAR2(35)
2、遞歸查找父結(jié)點(diǎn) org_id為C6000000000001下的所有子結(jié)點(diǎn):
復(fù)制代碼 代碼如下:
select * from comm_org_subjection a
start with a.org_id='C6000000000001'
connect by prior a.org_subjection_id=a.father_org_id
3、遞歸查找子結(jié)點(diǎn) org_id為C6000000000001下的所有父結(jié)點(diǎn):
復(fù)制代碼 代碼如下:
select org_id from comm_org_subjection a
start with a.org_id='C6000000000001'
connect by prior a.father_org_id=a.org_subjection_id
相關(guān)文章
oracle存儲過程創(chuàng)建表分區(qū)實(shí)例
二種oracle存儲過程創(chuàng)建表分區(qū)實(shí)例2013-11-11基于oracle小數(shù)點(diǎn)前零丟失的問題分析
本篇文章是對oracle小數(shù)點(diǎn)前零丟失的問題進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05oracle SCN跟TIMESTAMP之間轉(zhuǎn)換
本文將詳細(xì)介紹oracle SCN跟TIMESTAMP之間轉(zhuǎn)換,需要的朋友可以參考下2012-11-11Oracle數(shù)據(jù)塊實(shí)現(xiàn)原理深入解讀
Oracle對數(shù)據(jù)庫數(shù)據(jù)文件(datafile)中的存儲空間進(jìn)行管理的單位是數(shù)據(jù)塊(data block),本文將詳細(xì)介紹2012-11-11Oracle?listagg去重distinct的三種方式總結(jié)
這篇文章主要介紹了Oracle?listagg去重distinct的三種方式總結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-11-11