資料庫中常要處理父子關係的記錄,在oracle中可以用查詢語句一次把所有的子記錄全部取出來。例如下:
t1t11
t111
t1111
t12t121
t1211
db資料字段如下:
task_id task_name parent_task_id
000001 t1 ***
000002 t11 000001
000005 t12 000001
000003 t111 000002
000004 t1111 000003
000006 t121 000005
000007 t1211 000006
查詢語句:
select t.task_id ,t.task_name ,t.parent_task_id
from t_task t
start with task_id='000001'
connect by prior task_id = parent_task_id;
結果顯示:
task_id task_name t.parent_task_id
000001 t1
000002 t11 000001
000003 t111 000002
000004 t1111 000003
000005 t12 000001
000006 t121 000005
000007 t1211 000006
strat with 指定層次開始的條件,即是說滿足這個條件的行即可以做為層次樹的最頂層
connect by prior指層之間的關聯條件,即什麼樣的行是上層行的子行(自連線條件)
select level,id,name,parentid from temptable2
connect by prior id(子層的列)=parentid(屬於頂層的列) start with id =1
修改父子關係記錄:
update t_task t set t.task_name = "haha" where t.task_id in (
select tt.task_id from t_task tt start with tt.task_id = '000001' connect by prior tt.task_id = tt.parent_task_id
)刪除父子關係記錄:
delete from t_task where task_id in (select task_id from t_task connect by prior task_id=parentid start with task_id='000001');
oracle 遞迴查詢 Oracle遞迴查詢
1.1 建立表與插入資料 create table district id number 10 not null,parent id number 10 name varchar2 255 byte not null alter table district add constraint distr...
Oracle查詢 增加 刪除 修改主鍵
對oracle表主鍵的操作,有四類 查詢,增加,修改,刪除 1 查詢主鍵 查詢某個表中存在的約束 select from user constraints where table name 表名大寫 查詢結果顯示約束型別,約束名稱,不顯示約束在哪個欄位上 查詢某個表各字段約束 select from...
oracle 逆向遞迴查詢 oracle遞迴查詢
oracle的遞迴查詢 最近在看公司的oa系統,oa系統中基本都會有節點樹,其中對於樹上的資料展示,就是用了資料庫的遞迴查詢,在這裡總結下遞迴查詢。現在存在如下的一棵樹 不會畫樹,將就一下,該樹對應下面建立的表資料。建立如下表 create table dg id number not null,主...