电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

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

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

瀏覽:219日期: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
      主站蜘蛛池模板: 儿童语言障碍训练-武汉优佳加感统文化发展有限公司 | 三氯异氰尿酸-二氯-三氯-二氯异氰尿酸钠-优氯净-强氯精-消毒片-济南中北_优氯净厂家 | 奥运星-汽车性能网评-提供个性化汽车资讯 | 知企服务-企业综合服务(ZiKeys.com)-品优低价、种类齐全、过程管理透明、速度快捷高效、放心服务,知企专家! | 苏州同创电子有限公司 - 四探针测试仪源头厂家| 东莞工厂厂房装修_无尘车间施工_钢结构工程安装-广东集景建筑装饰设计工程有限公司 | 影像测量仪_三坐标测量机_一键式二次元_全自动影像测量仪-广东妙机精密科技股份有限公司 | 硫酸亚铁-聚合硫酸铁-除氟除磷剂-复合碳源-污水处理药剂厂家—长隆科技 | 金属清洗剂,防锈油,切削液,磨削液-青岛朗力防锈材料有限公司 | U拓留学雅思一站式服务中心_留学申请_雅思托福培训 | 信阳网站建设专家-信阳时代网联-【信阳网站建设百度推广优质服务提供商】信阳网站建设|信阳网络公司|信阳网络营销推广 | 沈阳缠绕包装机厂家直销-沈阳海鹞托盘缠绕包装机价格 | 英思科GTD-3000EX(美国英思科气体检测仪MX4MX6)百科-北京嘉华众信科技有限公司 | 上海小程序开发-上海小程序制作公司-上海网站建设-公众号开发运营-软件外包公司-咏熠科技 | 房间温控器|LonWorks|海思| 数控走心机-双主轴走心机厂家-南京建克| 西门子气候补偿器,锅炉气候补偿器-陕西沃信机电工程有限公司 | 精雕机-火花机-精雕机 cnc-高速精雕机-电火花机-广东鼎拓机械科技有限公司 | led全彩屏-室内|学校|展厅|p3|户外|会议室|圆柱|p2.5LED显示屏-LED显示屏价格-LED互动地砖屏_蕙宇屏科技 | 诸城网站建设-网络推广-网站优化-阿里巴巴托管-诸城恒泰互联 | 定时排水阀/排气阀-仪表三通旋塞阀-直角式脉冲电磁阀-永嘉良科阀门有限公司 | 纯水设备_苏州皙全超纯水设备水处理设备生产厂家 | 袋式过滤器,自清洗过滤器,保安过滤器,篮式过滤器,气体过滤器,全自动过滤器,反冲洗过滤器,管道过滤器,无锡驰业环保科技有限公司 | 济南货架定做_仓储货架生产厂_重型货架厂_仓库货架批发_济南启力仓储设备有限公司 | 电缆接头-防爆电缆接头-格兰头-金属电缆接头-防爆填料函 | 钢格板|镀锌钢格板|热镀锌钢格板|格栅板|钢格板|钢格栅板|热浸锌钢格板|平台钢格板|镀锌钢格栅板|热镀锌钢格栅板|平台钢格栅板|不锈钢钢格栅板 - 专业钢格板厂家 | 楼承板设备-楼承板成型机-免浇筑楼承板机器厂家-捡来 | PVC地板|PVC塑胶地板|PVC地板厂家|地板胶|防静电地板-无锡腾方装饰材料有限公司-咨询热线:4008-798-128 | 专注氟塑料泵_衬氟泵_磁力泵_卧龙泵阀_化工泵专业品牌 - 梭川泵阀 | 压缩空气冷冻式干燥机_吸附式干燥机_吸干机_沪盛冷干机 | RV减速机-蜗轮蜗杆减速机-洗车机减速机-减速机厂家-艾思捷 | 九爱图纸|机械CAD图纸下载交流中心| 成都中天自动化控制技术有限公司| 布袋除尘器|除尘器设备|除尘布袋|除尘设备_诺和环保设备 | 肉嫩度仪-凝胶测试仪-国产质构仪-气味分析仪-上海保圣实业发展有限公司|总部 | 飞象网 - 通信人每天必上的网站| PE拉伸缠绕膜,拉伸缠绕膜厂家,纳米缠绕膜-山东凯祥包装 | 济南品牌设计-济南品牌策划-即合品牌策划设计-山东即合官网 | 游泳池设计|设备|配件|药品|吸污机-东莞市太平洋康体设施有限公司 | 杭州荣奥家具有限公司-浙江办公家具,杭州办公家具厂 | 不锈钢酒柜|恒温酒柜|酒柜定制|酒窖定制-上海啸瑞实业有限公司 |