Oracle connect by prior理解

一、語法

SQL1: select * from goods_type connect by prior id = parent_id start with id = 213;
SQL2: select * from goods_type connect by prior id = parent_id and name like '%皮革%' start with id = 213;
SQL3: select * from goods_type where name like '%皮革%' connect  by prior id = parent_id  start with id = 213;

SQL4: select * from goods_type connect by prior id = parent_id  start with id = 1 and name like '%口%'

結果:

sql1:   查出  id爲213  及  其子記錄(所有)

sql2:   先過濾 再  查詢(每層的查詢都去過濾,只保留符合條件的子分支)

sql3:  先查詢 再 過濾(全部查完之後,對整個結果集過濾)

sql4:  對起始條件的一個過濾,即從   id爲1 name又包含 口的 記錄開始查起

二、理解

以上面的例子爲例

(1)先查出select id from organ where id = 1(即start with 的條件),查出來的結果作爲第一條數據。

(2) 再看connect by ,現在是prior id = parentid,即上一條的id 是下一條的parentid,

那麼這個查出來的就是 id=1的所有孩子以及它自身

如果要查 id= 1的父輩, 那麼就應該是 第一條的parentid 是下一條的id,即 prior parentid = id

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章