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数据库中,一个示例用户的名称.其作用是为初学者提供一些简单的应用示例,不过其默认是锁定状态,在安装时,根据用户需要,在“数据库配置助手”界面完成后,弹出
随机推荐
- 浅谈JavaScript前端开发的MVC结构与MVVM结构
- js 设置缓存及获取设置的缓存
- IIS7.5下301重定向的设置方法(及伪静态后301重定向出错案例)
- ASP.NET 跨页面传值方法
- 解析C语言基于UDP协议进行Socket编程的要点
- Android WebView 的简单使用
- Json数据异步绑定到界面的Table并且自动刷新原理及代码
- 十二星座节日送礼指南
- ruby执行周期性任务的三种gem介绍
- PowerShell批量安装msi后辍软件的方法
- MySQL数据库分区功能的使用教程
- Android开发笔记之:用Enum(枚举类型)取代整数集的应用详解
- FleaPHP框架数据库查询条件($conditions)写法总结
- php从数组中随机抽取一些元素的代码
- Android AIDL中Map参数传递的问题详解
- C# 操作PostgreSQL 数据库的示例代码
- Java全排列算法字典序下的下一个排列讲解
- 自定义Vue组件打包、发布到npm及使用教程
- Python中出现IndentationError:unindent does not match any outer indentation level错误的解决方法
- PHP+MySQL使用mysql_num_rows实现模糊查询图书信息功能