最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Oracle通過遞歸查詢父子兄弟節(jié)點方法示例

 更新時間:2018年01月14日 14:15:58   作者:dahaihh  
這篇文章主要給大家介紹了關(guān)于Oracle如何通過遞歸查詢父子兄弟節(jié)點的相關(guān)資料,遞歸查詢對各位程序員來說應(yīng)該都不陌生,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。

前言

說到Oracle中的遞歸查詢語法,我覺得有一些數(shù)據(jù)庫基礎(chǔ)的童鞋應(yīng)該都知道,做項目的時候應(yīng)該也會用到,下面本文就來介紹下關(guān)于Oracle通過遞歸查詢父子兄弟節(jié)點的相關(guān)內(nèi)容,分享出來供大家參考學(xué)習(xí),下面話不多說了,來一起看看詳細的介紹吧。

方法如下:

1、查詢某節(jié)點下所有后代節(jié)點(包括各級父節(jié)點)

 // 查詢id為101的所有后代節(jié)點,包含101在內(nèi)的各級父節(jié)點
 select t.* from SYS_ORG t start with id = '101' connect by parent_id = prior id

2、查詢某節(jié)點下所有后代節(jié)點(不包含各級父節(jié)點)

select t.*
 from SYS_ORG t
 where not exists (select 1 from SYS_ORG s where s.parent_id = t.id)
 start with id = '101'
connect by parent_id = prior id

3、查詢某節(jié)點所有父節(jié)點(所有祖宗節(jié)點)

 select t.*
 from SYS_ORG t
 start with id = '401000501'
 connect by prior parent_id = id

4、查詢某節(jié)點所有的兄弟節(jié)點(親兄弟)

 select * from SYS_ORG t
 where exists (select * from SYS_ORG s where t.parent_id=s.parent_id and s.id='401000501')

5、查詢某節(jié)點所有同級節(jié)點(族節(jié)點),假設(shè)不設(shè)置級別字段

with tmp as(
  select t.*, level leaf  
  from SYS_ORG t    
  start with t.parent_id = '0'  
  connect by t.parent_id = prior t.id)
select *        
  from tmp        
where leaf = (select leaf from tmp where id = '401000501');

這里使用兩個技巧,一個是使用了level來標(biāo)識每個節(jié)點在表中的級別,還有就是使用with語法模擬出了一張帶有級別的臨時表

 6、查詢某節(jié)點的父節(jié)點及兄弟節(jié)點(叔伯節(jié)點)

with tmp as(
 select t.*, level lev
 from SYS_ORG t
 start with t.parent_id = '0'
 connect by t.parent_id = prior t.id) 
select b.*
from tmp b,(select *
   from tmp
   where id = '401000501' and lev = '2') a
where b.lev = '1'
union all
select *
from tmp
where parent_id = (select distinct x.id
    from tmp x, --祖父
      tmp y, --父親
      (select *
      from tmp
      where id = '401000501' and lev > '2') z --兒子
    where y.id = z.parent_id and x.id = y.parent_id);

這里查詢分成以下幾步。

首先,將全表都使用臨時表加上級別;

其次,根據(jù)級別來判斷有幾種類型,以上文中舉的例子來說,有三種情況:

(1)當(dāng)前節(jié)點為頂級節(jié)點,即查詢出來的lev值為1,那么它沒有上級節(jié)點,不予考慮。

(2)當(dāng)前節(jié)點為2級節(jié)點,查詢出來的lev值為2,那么就只要保證lev級別為1的就是其上級節(jié)點的兄弟節(jié)點。

(3)其它情況就是3以及以上級別,那么就要選查詢出來其上級的上級節(jié)點(祖父),再來判斷祖父的下級節(jié)點都是屬于該節(jié)點的上級節(jié)點的兄弟節(jié)點。

最后,就是使用union將查詢出來的結(jié)果進行結(jié)合起來,形成結(jié)果集。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • Oracle如何通過表名查詢觸發(fā)器

    Oracle如何通過表名查詢觸發(fā)器

    這篇文章主要介紹了Oracle如何通過表名查詢觸發(fā)器方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Windows Server 2012 安裝oracle11g(圖文教程)

    Windows Server 2012 安裝oracle11g(圖文教程)

    這篇文章主要介紹了Windows Server 2012 安裝oracle11g(圖文教程),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • Linux中Oracle啟動偵聽報錯TNS:permission denied的解決方法

    Linux中Oracle啟動偵聽報錯TNS:permission denied的解決方法

    這篇文章主要介紹了Linux中Oracle啟動偵聽時報錯TNS:permission denied的解決方法,文中給出了詳細的解決方法,相信對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。
    2017-02-02
  • 深入oracle分區(qū)索引的詳解

    深入oracle分區(qū)索引的詳解

    本篇文章是對oracle分區(qū)索引進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • oracle索引總結(jié)

    oracle索引總結(jié)

    這篇文章要給大家介紹的是oracle索引,索引是數(shù)據(jù)庫對象之一,用于加快數(shù)據(jù)的檢索,類似于書籍的索引。在數(shù)據(jù)庫中索引可以減少數(shù)據(jù)庫程序查詢結(jié)果時需要讀取的數(shù)據(jù)量,類似于在書籍中我們利用索引可以不用翻閱整本書即可找到想要的信息。 感興趣的小伙伴可參考一下
    2021-09-09
  • oracle數(shù)據(jù)庫索引失效的問題及解決

    oracle數(shù)據(jù)庫索引失效的問題及解決

    本文總結(jié)了在Oracle數(shù)據(jù)庫中索引失效的一些常見場景,包括使用isnull、isnotnull、!=、<、>、函數(shù)處理、like前置%查詢以及范圍索引和等值索引同時存在等情況,通過實際的SQL查詢驗證,展示了索引失效的原因,并給出了相應(yīng)的優(yōu)化建議
    2025-01-01
  • Oracle/SQL中TO_DATE函數(shù)詳細實例解析

    Oracle/SQL中TO_DATE函數(shù)詳細實例解析

    Oracle to_date()函數(shù)用于日期轉(zhuǎn)換,下面這篇文章主要給大家介紹了關(guān)于Oracle/SQL中TO_DATE函數(shù)的相關(guān)資料,文中通過代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用oracle具有一定的參考解決價值,需要的朋友可以參考下
    2024-06-06
  • oracle關(guān)聯(lián)查詢報invalid number錯誤的解決方法

    oracle關(guān)聯(lián)查詢報invalid number錯誤的解決方法

    這篇文章主要介紹了oracle關(guān)聯(lián)查詢報invalid number錯誤的解決方法,文中通過代碼示例和圖文結(jié)合的方式講解的非常詳細,對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-09-09
  • oracle分區(qū)索引的失效和重建代碼示例

    oracle分區(qū)索引的失效和重建代碼示例

    這篇文章主要介紹了oracle分區(qū)的失效和重建代碼示例,小編覺得挺不錯的,這里分享給大家,供需要的朋友參考。
    2017-10-10
  • sqlplus 命令登錄 Oracle數(shù)據(jù)庫的多種方法

    sqlplus 命令登錄 Oracle數(shù)據(jù)庫的多種方法

    這篇文章主要介紹了sqlplus 命令登錄 Oracle數(shù)據(jù)庫的兩種方法,方式一通過sql*plus 命令窗口,方式2:通過 cmd 窗口,每種方式給大家介紹的非常詳細,需要的朋友可以參考下
    2021-09-09

最新評論

长汀县| 怀远县| 高雄县| 克山县| 江油市| 界首市| 改则县| 温泉县| 神木县| 蒙阴县| 东方市| 锦屏县| 盘山县| 三河市| 鲁山县| 上犹县| 房产| 乐陵市| 白玉县| 若羌县| 德江县| 龙州县| 孝感市| 颍上县| 和静县| 都江堰市| 静海县| 康保县| 漯河市| 绍兴县| 阿城市| 阳城县| 大冶市| 双辽市| 阆中市| 南丰县| 历史| 荆州市| 韩城市| 永春县| 合阳县|