oracle提供了一種樹形結構用來實現層次查詢:
start with :指定查詢的根行。
connect by :指定父行和子行的關係。
prior : 引用父行。
為測試方便,使用如下demo:
建立資料庫表treetable
create table treetable(
id number primary key, //主鍵
parentid number, //父節點
sortid number, //排序節點
name varchar2(10) //子節點名
);
1.插入資料,初始化結果見圖藍色部分。此時name欄位展現的沒有父子的層次關係。
[img]
通過parentid和id建立關聯,同乙個parentid對應多個id ,乙個id只對應乙個parentid。
使用層次查詢:
2.查詢一:
select id, parentid, sortid, name from treetable start with parentid = 0 connect by prior id = parentid;
執行以後的sortid和name欄位參照表中的綠色。
可以發現name欄位已經實現了樹形結構,但是在子節點之間未進行排序。
為了實現在同乙個父親下面各個兄弟的排序,oracle提供了siblings 排序。
3.查詢二:
select id, parentid, sortid, name from treetable start with parentid = 0 connect by prior id = parentid order siblings by sortid;
執行之後結果參照表中灰色欄位1.2.1和1.2.2排序了。
ORACLE樹形結構查詢
在oracle資料庫查詢中,我們經常會遇到對樹型結構表的查詢,這是個麻煩的問題。下面給大家介紹一種sql語句,實現遞迴查詢。語法如下 select 欄位1,欄位2,欄位3,from 表名 start with 條件1 connect by prior 條件2 where 條件3 下面舉乙個例子,有這...
Oracle查詢樹形結構
oracle中的select語句可以用start with.connect by prior子句實現遞迴查詢,connect by 是結構化查詢中用到的,其基本語法是 select from tablename start with cond1 connect by cond2 where cond...
oracle樹形結構查詢
最近用到了oracle的start with函式,所以在這裡簡單的記錄一下 首先可以造乙個表字段很簡單,如下 create table create table code id number,name varchar2 20 pid number tablespace tsdacns pctfree...