午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Oracle遞歸查詢(xún)簡(jiǎn)單示例

瀏覽:319日期:2023-03-12 15:25:41
目錄
  • 1 數(shù)據(jù)準(zhǔn)備
  • 2 start with connect by prior遞歸查詢(xún)
    • 2.1 查詢(xún)所有子節(jié)點(diǎn)
    • 2.2 查詢(xún)所有父節(jié)點(diǎn)
    • 2.3 查詢(xún)指定節(jié)點(diǎn)的,根節(jié)點(diǎn)
    • 2.4 查詢(xún)巴中市下行政組織遞歸路徑
  • 3 with遞歸查詢(xún)
    • 3.1 with遞歸子類(lèi)
    • 3.2 遞歸父類(lèi)
  • 補(bǔ)充:實(shí)例
    • 總結(jié)

      1 數(shù)據(jù)準(zhǔn)備

      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, "中國(guó)");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, "洛陽(yáng)市");insert into area_test (ID, PARENT_ID, NAME) values (114, 11, "新鄉(xiāng)市");insert into area_test (ID, PARENT_ID, NAME) values (115, 11, "南陽(yáng)市");insert into area_test (ID, PARENT_ID, NAME) values (121, 12, "朝陽(yáng)區(qū)");insert into area_test (ID, PARENT_ID, NAME) values (122, 12, "昌平區(qū)");insert into area_test (ID, PARENT_ID, NAME) values (1111, 111, "二七區(qū)");insert into area_test (ID, PARENT_ID, NAME) values (1112, 111, "中原區(qū)");insert into area_test (ID, PARENT_ID, NAME) values (1113, 111, "新鄭市");insert into area_test (ID, PARENT_ID, NAME) values (1114, 111, "經(jīng)開(kāi)區(qū)");insert into area_test (ID, PARENT_ID, NAME) values (1115, 111, "金水區(qū)");insert into area_test (ID, PARENT_ID, NAME) values (1121, 112, "湛河區(qū)");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, "尚店鎮(zhèn)");

      2 start with connect by prior遞歸查詢(xún)

      2.1 查詢(xún)所有子節(jié)點(diǎn)

      select *from area_teststart with name ="鄭州市"connect by prior id=parent_id

      2.2 查詢(xún)所有父節(jié)點(diǎn)

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

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

      2.3 查詢(xún)指定節(jié)點(diǎn)的,根節(jié)點(diǎn)

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

      2.4 查詢(xún)巴中市下行政組織遞歸路徑

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

      3 with遞歸查詢(xún)

      3.1 with遞歸子類(lèi)

      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 遞歸父類(lèi)

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

      補(bǔ)充:實(shí)例

      我們稱(chēng)表中的數(shù)據(jù)存在父子關(guān)系,通過(guò)列與列來(lái)關(guān)聯(lián)的,這樣的數(shù)據(jù)結(jié)構(gòu)為樹(shù)結(jié)構(gòu)。

      現(xiàn)在有一個(gè)menu表,字段有id,pid,title三個(gè)。

      查詢(xún)菜單id為10的所有子菜單。

      SELECT * FROM tb_menu m START WITH m.id=10 CONNECT BY m.pid=PRIOR m.id;

      將PRIOR關(guān)鍵字放在m.id前面,意思就是查詢(xún)pid是當(dāng)前記錄id的記錄,如此順延找到所有子節(jié)點(diǎn)。

      查詢(xún)菜單id為40的所有父菜單。

      SELECT * FROM tb_menu m START WITH m.id=40 CONNECT BY PRIOR m.pid= m.id ORDER BY ID;

      總結(jié)

      到此這篇關(guān)于Oracle遞歸查詢(xún)的文章就介紹到這了,更多相關(guān)Oracle遞歸查詢(xún)內(nèi)容請(qǐng)搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!

      標(biāo)簽: Oracle
      主站蜘蛛池模板: 国内av在线 | 日韩欧美一卡 | 久久久久久91香蕉国产 | 国产区在线看 | 欧美一级性 | 久久久久国产精品夜夜夜夜夜 | 国产一级黄色 | 伊人网综合视频 | 韩国色片 | 日韩拍拍拍 | 在线中文av | 国产三级精品三级在线观看 | av在线高清观看 | 日本一级大毛片a一 | 国产一区二区三区精品在线观看 | 久久久久亚洲精品中文字幕 | 成人爽爽视频 | 日本高清一二三区 | 在线成人亚洲 | 小明永久2015xxx免费看视频 | 黄色成人在线播放 | 成人午夜视频在线观看 | 99精品小视频 | 亚洲23p | 亚洲资源在线播放 | 青青草原国产在线观看 | 91喷潮 | 中文字幕一区二区三区视频 | 欧美国产日韩在线观看成人 | 在线91观看 | 在线免费黄色 | 免费一级黄色 | 亚洲国产一区二区三区 | 成人精品在线观看 | 性开放视频 | 中文av在线播放 | 国产精品11 | 欧美日韩在线网站 | 亚洲一区二区精品在线观看 | 93看片淫黄大片一级 | 亚洲爽爽爽 |