SQL語句 oracle樹查詢

2021-07-13 10:58:49 字數 1322 閱讀 1195

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...