树查询

使用树查询的前提条件是: 在一条记录中记录了当前节点的ID和这个节点的父ID。

注意:一旦数据中出现了循环记录,如两个节点互为对方的父结点,系统就会报 ORA-01436错误(ORA-01436: 用户数据中的CONNECT BY 循环)

第一步:创建表

create table MENU
(
MENU_ID NUMBER not null,
PARENT_ID NUMBER,
MENU_NAME NVARCHAR2()
);

第二步:插入数据

insert into MENU (MENU_ID, PARENT_ID, MENU_NAME) values (, null,'AAAA');
insert into MENU (MENU_ID, PARENT_ID, MENU_NAME) values (, , 'BBBB');
insert into MENU (MENU_ID, PARENT_ID, MENU_NAME) values (, , 'CCCC');
insert into MENU (MENU_ID, PARENT_ID, MENU_NAME) values (, , 'DDDD');
insert into MENU (MENU_ID, PARENT_ID, MENU_NAME) values (, , 'EEEE');
insert into MENU (MENU_ID, PARENT_ID, MENU_NAME) values (, , 'FFFF');
insert into MENU (MENU_ID, PARENT_ID, MENU_NAME) values (, , 'GGGG');
insert into MENU (MENU_ID, PARENT_ID, MENU_NAME) values (, , 'HHHH');
commit;

第三步:查询

select menu_id,rpad(' ',(level-)*)||menu_name from menu
connect by parent_id = prior menu_id
start with parent_id is null

显示出树的级别查询

select menu_id,rpad(' ',(level-)*)||menu_name,level from menu
connect by parent_id = prior menu_id
start with parent_id is null;

也可以这样写:

select role_id,parent_grade_id,level from audit_role
where level >
connect by prior role_id = parent_grade_id
start with role_id=
order by level;

ORACLE不常用但实用的技巧- 树查询 level用法的更多相关文章

  1. CSS最常用和实用的技巧

    1.重置浏览器的字体大小重置浏览器的默认值 ,然后重设浏览器的字体大小你可以使用雅虎的用户界面重置的CSS方案 ,如果你不想下载9MB的文件,代码如下: body,div,dl,dt,dd,ul,ol ...

  2. linux常用命令--实用小技巧

    >查看端口是否被启动--netstat 命令:netstat -an | grep 4445结果:如果有tcp一行则代表端口是开放的,如果没有说明没有访问权限,端口未开放 一般的,在服务器上端口 ...

  3. PHP 常用函数库和一些实用小技巧

    PHP 常用函数库和一些实用小技巧 作者: 字体:[增加 减小] 类型:转载   包括文件读取函式,文件写入函式,静态页面生成函式,目录删除函式等   文件读取函式 //文件读取函式 function ...

  4. Oracle树查询及相关函数

    Oracle树查询的最重要的就是select...start with... connect by ...prior 语法了.依托于该语法,我们可以将一个表形结构的中以树的顺序列出来.在下面列述了Or ...

  5. Eclipse 常用快捷键及使用技巧

    做 java 开发的,经常会用 Eclipse 或者 MyEclise 集成开发环境,一些实用的 Eclipse 快捷键和使用技巧,可以在平常开发中节约出很多时间提高工作效率,下面我就结合自己开发中的 ...

  6. Chrome 实用调试技巧

    Chrome 实用调试技巧 2016-07-23 如今Chrome浏览器无疑是最受前端青睐的工具,原因除了界面简洁.大量的应用插件,良好的代码规范支持.强大的V8解释器之外,还因为Chrome开发者工 ...

  7. Vim实用小技巧

    Vim实用小技巧 一些网络上质量较高的Vim资料 从我07年接触Vim以来,已经过去了8个年头,期间看过很多的Vim文章,我自己觉得非常不错,而且创作时间也比较近的文章有如下这些. Vim入门 目前为 ...

  8. 实用小技巧(一):UIScrollView中上下左右滚动方向的判断

    https://www.jianshu.com/p/93e8459b6dae 2017.06.01 01:13* 字数 674 阅读 1201评论 0喜欢 1 2017.06.01 01:13* 字数 ...

  9. 【Tips】【UE】总结自己常用的UltraEdit使用技巧

    如果您问我每天都要打开的软件是什么,那毫无疑问是UltraEdit!作为一位DBA,每天都要写各种脚本,尤其是在对具有超多行行的大文件进行精心编辑时,没有一个好的文本编辑器是不成的.掐指一算,哇塞,自 ...

随机推荐

  1. jQuery--dataTable 前端分页与后端分页 及遇到的问题

    (1)区别 前端分页:一次性把所有数据全都放在前端,由前端进行处理:适合请求的数据量不大的情况 后端分页:服务器模式,所有的分页,搜索,排序等操作在服务器端完成,然后前端去请求数据:适合量大的情况 ( ...

  2. php面试笔记(6)-php基础知识-正则表达式考点

    本文是根据慕课网Jason老师的课程进行的PHP面试知识点总结和升华,如有侵权请联系我进行删除,email:guoyugygy@163.com 在面试中,考官往往喜欢基础扎实的面试者,而正则表达式相关 ...

  3. Ream--(objc)写事务精简方案

    Ream--(objc)写事务精简方案 地址: REALM-- Realm官方提供的的写事务有两种方式: A[realm beginWriteTransaction]; // ... [realm c ...

  4. STM32之RGB灯仿真

    实验目的 点灯是练习GPIO输出的最佳实验.由于疫情期间没法返校,手头上没有现成的实验板,于是借助Proteus进行仿真.本实验点的不是普通的灯,而是RGB混色灯,实现多种颜色的显示.后期还可以加上P ...

  5. 字节、字符、位、bit、byte之间的关系

    字节.字符.位.bit.byte之间的关系 1. 概要 位(bit):是计算机 内部数据 储存的最小单位,表示二进制位,11001100是一个八位二进制数. 电脑记忆体中最小的单位,在二进位电脑系统中 ...

  6. go 算法与数据结构

    数据结构 稀疏数组 package main import "fmt" /* 稀疏数组 案例:五子棋存盘与复盘 节省存储空间 */ type ValNode struct { ro ...

  7. .Net框架的模块代码生成器--其一(dotnet new)

    小白教程声明,首先先介绍一下.Net 框架及模块是什么情况: 1.公司的大佬会把框架的代码打包成Nuget包放在公司的服务器上 2.公司会专门开一个git仓库,存储模块的代码,每个模块都有其独立的文件 ...

  8. 数据库->神奇的concat_ws函数

    神奇的concat_ws函数 了解到concat_ws函数起因是因为:朋友给我发了一份面试题,其中有一句看似很简单的查询,但是我就是没做出来.如下图:   经查阅资料了解通过两个字段拼接并且用“_”进 ...

  9. [Python]PyCharm中%matplotlib inline报错

    %matplotlib作用 是在使用jupyter notebook 或者 jupyter qtconsole的时候,才会经常用到%matplotlib,也就是说那一份代码可能就是别人使用jupyte ...

  10. [TJOI2015] 概率论 - Catalan数

    一棵随机生成的 \(n\) 个结点的有根二叉树(所有互相不同构的形态等概率出现)的叶子节点数的期望.\(n \leq 10^9\) Solution \(n\) 个点的二叉树个数即 Catalan 数 ...