oracle樹查詢的最重要的就是select…start with…connect by…prior語法了。
例如存在如下表:
select id,tid
from table
得到如下表,其中,id是節點,tid是父節點。
id, tid
1--------
2-------- 1
3-------- 1
4-------- 2
5-------- 4
6-------- 2
想根據某個id查出它本身,及所有子孫節點,作為一條記錄
比如:id cid
1-------- 1,2,3,4,5,6
2-------- 2,4,5,6
3-------- 3
4-------- 4,5
5-------- 5
6-------- 6
【sql語句--oracle】
查詢乙個節點的所有直屬子節點(所有後代)。
select *
from table m
start with m.id = 1
connect by m.tid = prior m.id;
查詢乙個節點的所有直屬父節點(祖宗)。
select *
from table m
start with m.id = x
connect by prior m.tid = m.id;
這兩條語句之間的區別在於prior關鍵字的位置不同,所以決定了查詢的方式不同。 當parent = prior id時,資料庫會根據當前的id迭代出parent與該id相同的記錄,所以查詢的結果是迭代出了所有的子類記錄;而prior parent = id時,資料庫會跟據當前的parent來迭代出與當前的parent相同的id的記錄,所以查詢出來的結果就是所有的父類結果。
【參考】
1.
oracle查詢sql語句
1.關鍵字 like 2 萬用字元 乙個 只能代表乙個字元,可以代替0到多個字元。select from user where username a between and.select from users where salary between 800 and 2000 查詢結果包含800也包...
oracle中sql語句查詢優化 四
9 union操作符 union在進行表鏈結後會篩選掉重複的記錄,所以在表鏈結後會對所產生的結果集進行排序運算,刪除重複的記錄再返回結果。實際大部分應用中是不會產生重複的記錄,最常見的是過程表與歷史 表union。如 複製 如下 select from gc dfys union select fr...
oracle中sql語句查詢優化 五
10 sql書寫的影響 同一功能同一效能不同寫法sql的影響 如乙個sql在a程式設計師寫的為 select from zl yhjbqk b程式設計師寫的為 select from dlyx.zl yhjbqk 帶表所有者的字首 c程式設計師寫的為 select from dlyx.zlyhjbq...