日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Oracle遞歸查詢樹形數據實例代碼

瀏覽:212日期:2023-03-12 15:25:42
目錄
  • 概述
  • 1、數據準備
  • 2 start with connect by prior遞歸查詢
    • 2.1 查詢所有子節點
    • 2.2 查詢所有父節點
    • 2.3 查詢指定節點的根節點
    • 2.4 查詢下行政組織遞歸路徑
  • 3 with遞歸查詢
    • 3.1 with遞歸子類
    • 3.2 遞歸父類
  • 4 MySQL 遞歸查找樹形結構
    • 總結

      概述

      實際生活有很多樹形結構的數據,比如公司分為多個部門,部門下分為多個組,組下分為多個員工;省市縣的歸屬;頁面菜單欄等等。

      如果想查詢某個節點的父節點或者子節點,一般通過表自身連接完成,但如果該節點的子節點還有多層結構,就需要使用遞歸調用。但如果數據量特別大,遞歸的次數指數級上升,而且查詢數據庫的次數也指數級上升,導致程序和數據庫壓力劇增,查詢時間特別長。那數據庫有沒有遞歸查詢語句呢?答案是肯定的。

      start with connect by prior 遞歸查詢

      1、數據準備

      create table area_test(  id number(10) not null,  parent_id  number(10),  name       varchar2(255) not null);alter table area_test add (constraint district_pk primary key (id));insert into area_test (ID, PARENT_ID, NAME) values (1, null, "中國");insert into area_test (ID, PARENT_ID, NAME) values (11, 1, "河南省"); insert into area_test (ID, PARENT_ID, NAME) values (12, 1, "北京市");insert into area_test (ID, PARENT_ID, NAME) values (111, 11, "鄭州市");insert into area_test (ID, PARENT_ID, NAME) values (112, 11, "平頂山市");insert into area_test (ID, PARENT_ID, NAME) values (113, 11, "洛陽市");insert into area_test (ID, PARENT_ID, NAME) values (114, 11, "新鄉市");insert into area_test (ID, PARENT_ID, NAME) values (115, 11, "南陽市");insert into area_test (ID, PARENT_ID, NAME) values (121, 12, "朝陽區");insert into area_test (ID, PARENT_ID, NAME) values (122, 12, "昌平區");insert into area_test (ID, PARENT_ID, NAME) values (1111, 111, "二七區");insert into area_test (ID, PARENT_ID, NAME) values (1112, 111, "中原區");insert into area_test (ID, PARENT_ID, NAME) values (1113, 111, "新鄭市");insert into area_test (ID, PARENT_ID, NAME) values (1114, 111, "經開區");insert into area_test (ID, PARENT_ID, NAME) values (1115, 111, "金水區");insert into area_test (ID, PARENT_ID, NAME) values (1121, 112, "湛河區");insert into area_test (ID, PARENT_ID, NAME) values (1122, 112, "舞鋼市");insert into area_test (ID, PARENT_ID, NAME) values (1123, 112, "寶豐市");insert into area_test (ID, PARENT_ID, NAME) values (11221, 1122, "尚店鎮");

      2 start with connect by prior遞歸查詢

      • start with 子句:遍歷起始條件。如果要查父結點,這里可以用子結點的列,反之亦然。
      • connect by 子句:連接條件。prior 跟父節點列parentid放在一起,就是往父結點方向遍歷;prior 跟子結點列subid放在一起,則往葉子結點方向遍歷。parent_id、id兩列誰放在 “=” 前都無所謂,關鍵是prior跟誰在一起。
      • order by 子句:排序。

      常用的select項:

      LEVEL:級別
      connect_by_root:根節點
      sys_connect_by_path:遞歸路徑

      2.1 查詢所有子節點

      select t.*,LEVELfrom area_test tstart with name ="鄭州市"connect by prior id=parent_id

      其實,如果單層結構,使用表自身連接也可以實現:

      select * from area_test t1,area_test t2 where t1.PARENT_ID = t2.ID and t2.name="鄭州市";

      當查詢節點下有多層數據:

      select t.*,LEVELfrom area_test tstart with name ="河南省"connect by prior id=parent_id

      select * from area_test t1,area_test t2 where t1.PARENT_ID = t2.ID and t2.name="河南省";

      如果使用自身連接,也只能查到子一級節點的數據,需要遍歷子一級節點,遞歸查詢每個子一級節點下的子節點。明顯麻煩很多!!!

      2.2 查詢所有父節點

      select t.*,levelfrom area_test tstart with name ="鄭州市"connect by prior t.parent_id=t.idorder by level asc;

      2.3 查詢指定節點的根節點

      select d.*,	   connect_by_root(d.id) rootid,	   connect_by_root(d.name) rootnamefrom area_test dwhere name="二七區"start with d.parent_id IS NULLconnect by prior d.id=d.parent_id

      select d.*,	   connect_by_root(d.id) rootid,	   connect_by_root(d.name) rootnamefrom area_test dstart with d.parent_id IS NULLconnect by prior d.id=d.parent_id

      2.4 查詢下行政組織遞歸路徑

      select id, parent_id, name, sys_connect_by_path(name, "->") namepath, levelfrom area_teststart with name = "平頂山市"connect by prior id = parent_id

      3 with遞歸查詢

      3.1 with遞歸子類

      with tmp(id, parent_id, name) as (	select id, parent_id, name    from area_test    where name = "平頂山市"    union all    select d.id, d.parent_id, d.name    from tmp, area_test d    where tmp.id = d.parent_id   )select * from tmp;

      3.2 遞歸父類

      with tmp(id, parent_id, name) as  (   select id, parent_id, name   from area_test   where name = "二七區"   union all   select d.id, d.parent_id, d.name   from tmp, area_test d   where tmp.parent_id = d.id   )select * from tmp;

      4 MySQL 遞歸查找樹形結構

      參考文章:MySQL 遞歸查找樹形結構,這個方法太實用了

      參考文章:Oracle遞歸查詢

      總結

      到此這篇關于Oracle遞歸查詢樹形數據的文章就介紹到這了,更多相關Oracle遞歸查詢樹形數據內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!

      標簽: Oracle
      日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
      91精品久久久久久久久久不卡| 久久久久久网| 亚洲播播91| 日本免费久久| 欧美影院三区| 久久视频国产| 中文视频一区| 亚洲天堂日韩在线| 亚洲精品伊人| 国产精品sss在线观看av| 国产精品视频一区二区三区综合 | 国产精品毛片aⅴ一区二区三区| 亚洲精品三级| 国产图片一区| 国产麻豆久久| 97久久亚洲| 欧美男人天堂| 亚洲一二三区视频| 日韩欧美中文在线观看| 精品国产一区二区三区av片| 欧美一级精品| 日韩和欧美一区二区三区| 精品福利久久久| 性欧美69xoxoxoxo| 三级在线观看一区二区| 日本中文字幕视频一区| 亚洲一区资源| 日本视频中文字幕一区二区三区| 国产一区日韩| 日韩在线卡一卡二| 日产午夜精品一线二线三线| 蜜臀久久99精品久久久画质超高清| 日韩和欧美一区二区| 久久99视频| 欧美a级一区| 牛牛精品成人免费视频| 国产亚洲午夜| 日韩不卡一区二区| 精品视频一区二区三区四区五区 | 欧美日韩亚洲一区三区| 亚洲一级黄色| 成人午夜网址| 欧美亚洲国产日韩| 免费在线看一区| 久久中文在线| 国产欧美日韩综合一区在线播放| 黑丝一区二区| 日本免费一区二区三区四区| 欧美aa在线视频| 国产精品99久久久久久董美香| 九色精品91| 日韩精品诱惑一区?区三区| 快播电影网址老女人久久| 日韩国产一二三区| 综合一区二区三区| 亚洲午夜免费| 亚洲毛片在线| 亚洲精品韩国| 日韩精品中文字幕一区二区| 日韩精品影视| 五月天激情综合网| 午夜久久影院| 精品国产a一区二区三区v免费| 精品一区二区三区视频在线播放| 国产精品嫩草影院在线看| 91国内精品| 国产999精品在线观看| 日韩欧美中文| 99热精品在线观看| 日韩精品电影一区亚洲| 国产精品亚洲欧美日韩一区在线| 国产精品a级| 日本美女一区| 99在线精品视频在线观看| 激情久久中文字幕| 免费看黄色91| 久久精品国产99| 天堂日韩电影| 久久高清一区| 国产精品xxx| 欧美 日韩 国产一区二区在线视频| 欧美.日韩.国产.一区.二区| 男女男精品网站| 久久女人天堂| 中国女人久久久| 久久精品伊人| 一区二区三区四区日韩| 福利一区和二区| 99视频一区| 日本aⅴ免费视频一区二区三区| 老司机精品视频在线播放| 蜜臀久久99精品久久一区二区| 亚洲精品第一| 激情久久久久久| 国语对白精品一区二区| 久久夜色精品| 岛国av在线播放| 日韩欧美高清一区二区三区| 亚洲成a人片| 国产日产高清欧美一区二区三区| 伊人精品视频| 日韩精品91| 久久精品亚洲一区二区| 日本精品一区二区三区在线观看视频| 精品一区二区三区视频在线播放| 亚洲狼人精品一区二区三区| 国产精品99一区二区| 日本久久综合| 麻豆一区在线| 久久激五月天综合精品| 日韩精品一卡二卡三卡四卡无卡| 亚洲成人一区在线观看| 成人精品动漫一区二区三区| 国产欧美日韩精品一区二区三区| 亚洲一区国产| 亚洲深夜福利| 亚洲深夜影院| 99精品99| 在线观看亚洲精品福利片| 中文字幕高清在线播放| 精品视频自拍| 久久香蕉精品香蕉| 欧美极品一区二区三区| 国产日韩在线观看视频| 欧美亚洲tv| 国产精品网址| 国产伊人久久| 日韩成人综合| 激情五月综合| 在线精品国产亚洲| 欧美日韩一区二区三区不卡视频| 日韩福利在线观看| 国产精品对白| 中文av在线全新| 亚洲伦乱视频| 色综合狠狠操| 欧美日韩在线二区| 夜夜嗨网站十八久久| 视频一区在线视频| 国产欧美日韩精品一区二区三区| 欧美国产中文高清| 日韩电影二区| 免费一区二区视频| 麻豆91精品视频| 加勒比视频一区| 欧美日韩国产在线一区| 日日夜夜免费精品| 亚洲精品系列| 国产一区二区色噜噜| 成人免费一区| 国产精品av一区二区| 日韩精品欧美成人高清一区二区| 久久精品国产一区二区| 不卡在线一区二区| 天堂精品久久久久| 青青青免费在线视频| 亚洲精品在线a| 欧美日韩视频免费观看| 涩涩涩久久久成人精品| 成人国产精品久久| 亚洲久久在线| 久久精品影视| 奇米狠狠一区二区三区| 亚洲欧洲美洲av| 亚洲电影在线一区二区三区| 国产亚洲一区二区三区不卡| 国产理论在线| 亚洲精品大全| 欧美日韩精品一区二区视频| 日本91福利区| 久久香蕉精品| 色综合www| 欧美久久香蕉| 亚洲免费观看| 久久蜜桃精品| 久久一区精品| 日本 国产 欧美色综合| 快播电影网址老女人久久| 久久中文字幕一区二区三区| 9久re热视频在线精品| 国产精品二区不卡| 国产精品一区高清| 欧美日韩国产一区精品一区| 欧美aa在线观看| 精品视频99| 美女久久精品| 国产精品99精品一区二区三区∴| 香蕉久久久久久| 久久国产99| 蜜桃伊人久久| 综合激情在线| 中文字幕一区二区三区四区久久 | 日韩有码av| 综合激情视频| 亚洲精品乱码| 亚洲精品国产精品粉嫩| 日韩和欧美一区二区三区| 亚洲毛片视频| 一区二区不卡| 国产日韩在线观看视频|