Oracle层次查询和with函数的使用示例
开发中大家应该都做过什么类似部门管理这样的功能,一般情况下一个部门下面还有下一级部门(子部门),这个层级就类似一棵树。这种情况下一般会把父级部门和子级部门分成2个或者多个表,这种算是比较常规的做法;有时可能为了数据表管理的方便 就把所有的部门放在一张表里并加上一个字段标识部门之间的隶属关系,这样子看起来有点奇怪,但凑合用用还是Ok的。下面我跟大家分享下我的心得,也就是基于这种设计怎么做数形图,简单的做法就是查询出一个list集合就可以,要怎么办呢先来看下我的数据表
不难看出部门之间用fparent关联,那sql语句怎么写呢,下面是一种偷懒的写法
代码如下:
-- ||是连接符,level可以看成常量
select t.fnum,LPAD(' ',3*level-3)||'|-'||fname fname,t.fparent,Level lev
From m_depart t
--start with后面是条件1
start with fparent is null
--connect by Prior后面是条件2
connect by Prior fnum=fparent
下面是查询结果,查询结果和数非常接近
差不多了下面还有一个比较常用的with函数,一般做复杂查询可能会用到,可以参考下面的文章
相关推荐
-
Oracle层次查询和with函数的使用示例
开发中大家应该都做过什么类似部门管理这样的功能,一般情况下一个部门下面还有下一级部门(子部门),这个层级就类似一棵树.这种情况下一般会把父级部门和子级部门分成2个或者多个表,这种算是比较常规的做法:有时可能为了数据表管理的方便 就把所有的部门放在一张表里并加上一个字段标识部门之间的隶属关系,这样子看起来有点奇怪,但凑合用用还是Ok的.下面我跟大家分享下我的心得,也就是基于这种设计怎么做数形图,简单的做法就是查询出一个list集合就可以,要怎么办呢先来看下我的数据表 不难看出部门之间用fpare
-
oracle 合并查询 事务 sql函数小知识学习
表查询: 合并查询:使用union关键字,可将满足条件的重复行去掉. 复制代码 代码如下: select ename,sal,job from emp where sal > 2500 union select ename,sal,job from emp where job = 'MANAGER'; 而union all用法和union相似,但是不会取消重复行. intersect 用来取两个结果的交集. minus用来取两个结果的差集. 使员工scott的岗位,工资,补助与SMITH员工一样
-
Oracle中的游标和函数详解
Oracle中的游标和函数详解 1.游标 游标是一种 PL/SQL 控制结构:可以对 SQL 语句的处理进行显示控制,便于对表的行数据 逐条进行处理. 游标并不是一个数据库对象,只是存留在内存中. 操作步骤: 声明游标 打开游标 取出结果,此时的结果取出的是一行数据 关闭游标 到底那种类型可以把一行的数据都装进来 此时使用 ROWTYPE 类型,此类型表示可以把一行的数据都装进来. 例如:查询雇员编号为 7369 的信息(肯定是一行信息). 例:查询雇员编号为 7369 的信息(肯定是一
-
Oracle实现查询2个日期所跨过的月份列表/日期列表的方法分析
本文实例讲述了Oracle实现查询2个日期所跨过的月份列表/日期列表的方法.分享给大家供大家参考,具体如下: 1.基本逻辑公式: Select Rownum, 开始日期+Rownum-1 from dual connect by rownum< 结束日期-开始日期 +2; 2.查询2个日期所跨过的日期yyyy-mm-dd列表: 查询结果: SQL代码(开始时间:2019-01-22,结束时间:2019-01-02): Select Rownum, to_date('2019-01-02', 'y
-
oracle基本查询用法入门示例
本文实例讲述了oracle基本查询用法.分享给大家供大家参考,具体如下: 一.基本select语句 SELECT *|{[DISTINCT] column|expression [alias], ...} FROM table; 例如: --查询所有数据 select * from emp; --查询指定列数据 select empno,ename,sal from emp; --算数运算符(+ - * /) select ename,sal,sal+30 from emp; --使用括号 se
-
oracle基本查询操作子查询用法实例分析
本文实例讲述了oracle基本查询操作子查询用法.分享给大家供大家参考,具体如下: 一.子查询语法 SELECT select_list FROM table WHERE expr operator (SELECT select_list FROM table); 子查询在主查询之前一次执行完成. 子查询的结果被主查询使用. select ename from emp where sal > (select sal from emp where ename='SCOTT'); (*注意:子查询要
-
python针对Oracle常见查询操作实例分析
本文实例讲述了python针对Oracle常见查询操作.分享给大家供大家参考,具体如下: 1.子查询(难): 当进行查询的时候,发现需要的数据信息不明确,需要先通过另一个查询得到, 此查询称为子查询: 执行顺序:先执行子查询得到结果以后返回给主查询 组成部分: 1).主查询部分 2).子查询部分 [注意事项]: 子查询一定需要被定义/包裹在小括号内部,可以认为是显示的提升了代码执行的优先级 需求1: 查询薪资比Abel的高的有谁? 分析: ①.先查询出Abel的薪资是多少? ②.将过滤条件定义为
-
Oracle数据库中SQL开窗函数的使用
开窗函数:在开窗函数出现之前存在着很多用 SQL 语句很难解决的问题,很多都要通过复杂的相关子查询或者存储过程来完成.为了解决这些问题,在 2003 年 ISO SQL 标准加入了开窗函数,开窗函数的使用使得这些经典的难题可以被轻松的解决.目前在 MSSQLServer.Oracle.DB2 等主流数据库中都提供了对开窗函数的支持,不过非常遗憾的是 MYSQL 暂时还未对开窗函数给予支持. 开窗函数简介:与聚合函数一样,开窗函数也是对行集组进行聚合计算,但是它不像普通聚合函数那样每组只返回一个值
-
Oracle 模糊查询及like用法
目录 Oracle 模糊查询like用法 一.where子句中使用like关键字 1._ 2.[] 3.[^] 二.在Oracle中提供了instr(strSource,strTarget)函数 Oracle 模糊查询like用法 一.where子句中使用like关键字 我们可以在where子句中使用like关键字来达到Oracle模糊查询的效果:在Where子句中,可以对datetime.char.varchar字段类型的列用Like关键字配合通配符来实现模糊查询, 以下是可使用的通配符: %
-
Oracle数据库中通用的函数实例详解
目录 一. Scott用户下的表结构 1.如果自己没有Scoot表就可以自己创建一个 二.单行函数 1.字符函数 2.数值函数 三.多行函数(聚合函数) 1.统计记录数 2.最小值查询 min() 3.最大值查询 max() 4.平均值查询 avg() 5.求和函数 四.分组统计 总结 一. Scott用户下的表结构 SCOTT.是在Oracle数据库中,一个示例用户的名称.其作用是为初学者提供一些简单的应用示例,不过其默认是锁定状态,在安装时,根据用户需要,在“数据库配置助手”界面完成后,弹出
随机推荐
- phpPgAdmin 配置文件参数说明中文版
- jquery easyui中treegrid用法的简单实例
- 详解jQuery中的元素的属性和相关操作
- 16个最流行的JavaScript框架[推荐]
- 基于JS代码实现实时显示系统时间
- 怎样修复Windows 10 Enterprise 在9月更新后图片全部由绘图板打开的情况
- 在 YouTube 上学 Photoshop
- 不用kavo.exe专杀手工即可清除方法
- Python操作SQLite数据库的方法详解【导入,创建,游标,增删改查等】
- 浅析drop user与delete from mysql.user的区别
- 详解Node.js:events事件模块
- JSP迅速入门
- C#从数据库读取数据到DataSet并保存到xml文件的方法
- 史上最欠扁的八大鬼故事
- linux轻量级 Web 服务器第1/2页
- jQuery下拉友情链接美化效果代码分享
- 很酷的60款jQuery 幻灯片演示和下载
- 查看一个顶级域名下所有的二级域名
- Java中的泛型方法详解及简单实例
- PHP 通过Socket收发十六进制数据的实现代码