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

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

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

瀏覽:210日期: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久久,三上悠亚国产精品一区二区三区
      欧美一区成人| 99国产精品一区二区| 夜久久久久久| 免费不卡在线视频| 日韩动漫一区| 欧美激情精品| 国产精品22p| 美女国产精品久久久| 精品免费av一区二区三区| 精品国产一级| 久久亚洲国产| 午夜亚洲福利| 麻豆国产精品777777在线| 日韩专区精品| 婷婷精品进入| 亚洲不卡视频| 国产一区二区三区国产精品 | 日韩影院在线观看| 青草国产精品| а√天堂8资源在线| 999久久久国产精品| 欧美1区免费| 日韩激情视频网站| 国产高清不卡| 美女91精品| 久久久精品国产**网站| 久久久久久久久99精品大| 亚洲精品影视| 中文字幕在线看片| 亚洲乱码久久| 神马久久午夜| 亚洲欧美网站在线观看| 国内在线观看一区二区三区| 欧美日韩激情| 国产精品麻豆成人av电影艾秋| 麻豆视频久久| 丝袜亚洲另类欧美| 在线看片国产福利你懂的| 中文字幕日韩欧美精品高清在线| 国内不卡的一区二区三区中文字幕| aa国产精品| 国产成人精品一区二区三区免费| 久久成人一区| 91av亚洲| 国产美女视频一区二区| 激情综合在线| 精品午夜久久| 日本不卡视频在线| 99久久亚洲精品蜜臀| 国产亚洲精品美女久久久久久久久久| 天堂√8在线中文| 国产欧美日韩一区二区三区四区| 黄色成人在线网址| 成人欧美一区二区三区的电影| 亚洲精品在线国产| 亚洲精品99| 群体交乱之放荡娇妻一区二区| 国产精品视频一区二区三区四蜜臂 | 9999国产精品| 免费不卡在线观看| 欧美香蕉视频| 国产精品入口久久| 日韩在线黄色| 亚洲欧洲另类| 久久久久.com| 成人在线免费观看网站| 欧美日韩视频免费看| 亚洲精品综合| 欧美日韩免费观看一区=区三区| 日韩综合一区| 麻豆一区二区在线| 国产亚洲久久| 日韩成人在线看| 亚洲精品伊人| 国产模特精品视频久久久久| 久久久夜夜夜| 日韩精品免费一区二区三区| 精品国产不卡| 国产精品99久久免费| 欧美日韩网址| 91精品丝袜国产高跟在线| 日韩在线观看一区二区| 老鸭窝亚洲一区二区三区| 午夜国产精品视频免费体验区| 欧美精品高清| 特黄特色欧美大片| 桃色一区二区| 日韩成人高清| 日本精品不卡| 黄色在线网站噜噜噜| 成人污污视频| 中文字幕人成乱码在线观看 | 亚洲尤物av| 蜜桃久久久久久久| 亚洲精品进入| 欧美日韩中文| 美女视频黄久久| 国产不卡一区| 日韩一区二区三区在线免费观看| 欧美gv在线| 国产精品99一区二区| 亚洲免费精品| 国产精品毛片在线看| 性色一区二区| 亚洲精选av| 国产精品欧美日韩一区| 久久香蕉网站| 青青久久av| 在线一区欧美| 亚洲aa在线| 麻豆久久一区二区| 五月激情久久| 蜜桃av一区二区在线观看| 欧美亚洲一级| 91欧美在线| 欧美亚洲精品在线| 中文字幕一区二区精品区| 亚洲欧美日本国产专区一区| 日韩欧美久久| 精品日韩一区| 欧美jjzz| 日韩超碰人人爽人人做人人添| 久久a爱视频| 蜜桃精品在线| 亚洲视频二区| 精品欠久久久中文字幕加勒比| 久久精选视频| 婷婷亚洲成人| 国产va在线视频| 亚洲自拍另类| 国产精品久久亚洲不卡| 色婷婷久久久| 在线视频精品| 欧美激情三区| 欧美 日韩 国产精品免费观看| 蜜臀久久99精品久久久久宅男| 91精品国产经典在线观看| 国产一区二区精品福利地址| 美女久久久久| 欧美久久一区二区三区| 欧美天堂视频| 日韩福利视频一区| 久久国产免费| 国产探花在线精品一区二区| 午夜久久中文| 欧美日韩 国产精品| 青青久久av| 无码日韩精品一区二区免费| 国产精品成人a在线观看| 免费看欧美美女黄的网站| 精品资源在线| 免费不卡在线观看| 日韩免费福利视频| 国产伦理久久久久久妇女| 欧美特黄一级| 国产精品99在线观看| 日韩精品亚洲专区在线观看| 日韩精品影视| 精品黄色一级片| 涩涩涩久久久成人精品| 久久精品亚洲人成影院| 国产精品欧美大片| 伊人久久亚洲热| 国产精品99视频| 久久精品av麻豆的观看方式| 日韩一级网站| 亚洲精品国产嫩草在线观看| 国产欧美一区二区三区国产幕精品 | 国产伦理一区| 蜜桃久久久久久久| 1000部精品久久久久久久久| 国产精品一区二区三区四区在线观看 | 成人精品亚洲| 久久69成人| 欧美日韩中出| 亚洲色图综合| 欧美日韩国产在线观看网站 | 欧美日韩调教| 一区二区91| 五月天激情综合网| 久久影院午夜精品| 久久亚洲道色| 国产精品一区二区三区四区在线观看| 国产一级久久| 亚洲欧美日韩高清在线| 日韩精品欧美| 涩涩av在线| 久久久久久色 | 欧美中文日韩| 欧美福利一区| 久久精品123| 国产精品专区免费| 牛牛精品成人免费视频| 欧美一区二区三区久久| 日韩有码av| 日韩欧美中文字幕一区二区三区| 免费欧美日韩| 日韩制服丝袜先锋影音| 免费日韩av片| 综合在线一区|