oracle层次查询中prior与自上而下、自下而上查询
生活随笔
收集整理的這篇文章主要介紹了
oracle层次查询中prior与自上而下、自下而上查询
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
作為一名開發(fā)和管理兼修的工程師,有時候會遇到編寫復(fù)雜的sql ,此時就會查找資料,事后又很快會忘記。記得自己每次編寫層次結(jié)構(gòu)的時候都會找資料,到底誰是父親,誰是孩子,prior放在那邊代表什么意思。
今天主要把層次的語法進(jìn)行分析,并用自己的理解記住自頂向下和自底向上。
基本語法很簡單:
select ... from table where 條件 connect by prior column1=column2 start with order [siblings] by;- 1、where 條件很好理解,就是在整個查詢結(jié)果的基礎(chǔ)上,進(jìn)行過濾;并非過濾之后再查詢。
- 2、start with 也很好理解,表示從什么開始,通常表示指定一個樹的根節(jié)點(diǎn)或者一個樹的葉子節(jié)點(diǎn);這取決于你是自頂向下還是自底向上。
- 3、order [siblings] by主要是排序,可以按照各種條件進(jìn)行排序,siblings定義了同一個父親下的兄弟之間的排序。
- 4、connect by 這是每次容易弄混淆的:
理解connect by ,舉例如下
prior child_id = parent_id <=> parent_id=prior child_idprior parent_id=child_id <=> child_id=prior parent_id等式兩邊互換位置是等價的。
當(dāng)prior放在那一邊時,我們可以翻譯為找什么;比如第一個prior child_id 可以翻譯為找孩子;prior parent_id 翻譯為找父親;這樣找孩子的話,可以就是自頂向下了,找父親就是自底向上。
有個這個理解,寫層次查詢時,就知道如何擺放prior位置了。
5、還有一個偽列l(wèi)evel,代表著層次。
總結(jié)
以上是生活随笔為你收集整理的oracle层次查询中prior与自上而下、自下而上查询的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据库设计--数据字典
- 下一篇: map遍历删除异常:Concurrent