oracle中使用SQL递归语句

场景:常见的领导关系树结构,知道某一节点ID,要查出此节点的所有下级(直接下级和间接下级),此时需要使用SQL递归语句。

oracle中的递归语句: 

start   with     connect   by   prior  .

例子:

 pid  id
  a   b  
  a   c    
  a   e  
  b   b1  
  b   b2  
  c   c1  
  e   e1  
  e   e3  
  d   d1  
   
  指定pid=a,选出  
  a   b  
  a   c    
  a   e  
  b   b1  
  b   b2  
  c   c1  
  e   e1  
  e   e3 
SQL语句:

  select   parent,child   from   test   start   with   pid='a'   
  connect   by   prior   id=pid 

文章转自庄周梦蝶  ,原文发布时间5.17

时间: 2024-09-24 01:23:57

oracle中使用SQL递归语句的相关文章

oracle中复杂sql查询语句详解 (1/4)

1.查询语句的使用 使用 select语句和子查询(subquery)可以从一个或多个表,视图,实体试图中返回数据.   1.1相关子查询 可以将子查询(as subquery)或in或exists当成where的一个条件的一部分,这样的查询称为子查询   .where中可以包含一个select语句的子查询   .where中可以包含in,exists语句   .最多可以嵌套16层   .层次过多会影响性能   [例]简单子查询实例   查询是否有的专家既以研究所的名义来申请基金项目,又以大学系

Oracle中PL/SQL中if语句的写法介绍

以下是对Oracle中PL/SQL中if语句的写法进行了详细的分析介绍,需要的朋友可以过来参考下   复制代码 代码如下: /* If语句: 判断用户输入的数字. */ set serveroutput on --接收键盘输入 accept num prompt '请输入一个数字:'; declare   --将屏幕输入的数字付给变量   pnum number := # begin   if pnum = 0 then dbms_output.put_line('您输入的是0');   end

需求-oracle 创建动态SQL 步骤语句相关

问题描述 oracle 创建动态SQL 步骤语句相关 需求是:将多个sql语句储存在数据库表中,储存方式为ID,sql语句,通过某种方式依次执行这些SQL,然后将结果储存在另一个表中,应该怎么做?或者跟我说说关键词我搜搜,谢谢大家啦~ 解决方案 Oracle创建DBLinker的相关步骤Oracle创建表以及相关语句小记ORACLE之 动态 SQL 语句

关联-关于oracle中查询sql的优化

问题描述 关于oracle中查询sql的优化 在数据库中的某个表中有几百万条数据,现在要用这张表关联别的表去查询,查询速度很慢,如何优化才能使查询速度快一些. 解决方案 先优化SQL,然后再优化业务逻辑.最后优化数据库数据存储.起码得把SQL贴出来看看吧,几百万的数据不算多呀. 解决方案二: oracle的权值查询 解决方案三: 用一个相关联的ID,直接查那个表,这样就简单了!

关于oracle中的sql数据类型

数据类型对于每一种编程语言而言都是数据存储的基础,对于编程语言的实现功能而言也是一个标尺,有些编程语言可能数据类型很丰富,比如java,c,在数据计算方面的支持很全面,有些编程比较精简,更侧重于实现特定的功能,数据类型也就简单得多.比如说shell. 对于oracle中的sql来说,数据类型的支持非常全面,无论是数据计算还是复杂的业务逻辑封装需要,数据类型的支持都是内置和可扩展的.可以根据需要来选择. 目前oracle的数据类型分类大体有如下的结构. 用户自定义类型,基本上都是由type来实现,

Oracle中解析SQL语句的过程

为了将用户写的SQL文本转化为Oracle认识的且可执行的语句,这个过程就叫做解析过程.解析分为硬解析和软解析.一条SQL语句在第一次被执行时必须进行硬解析. 当客户端发出一条SQL语句(也可以是一个存储过程或者一个匿名PL/SQL块)进入shared pool时(注意,我们从前面已经知道,Oracle对这些SQL不叫做SQL语句,而是称为游标.因为Oracle在处理SQL时,需要很多相关的辅助信息,这些辅助信息与SQL语句一起组成了游标), Oracle首先将SQL文本转化为ASCII值,然后

Oracle中优化SQL的原则

oracle|优化 1.已经检验的语句和已在共享池中的语句之间要完全一样2.变量名称尽量一致3.合理使用外联接4.少用多层嵌套5.多用并发 语句的优化步骤一般有:1.调整sga区,使得sga区的是用最优.2.sql语句本身的优化,工具有explain,sql trace等3.数据库结构调整4.项目结构调整写语句的经验:1.对于大表的查询使用索引2.少用in,exist等3.使用集合运算 1.对于大表查询中的列应尽量避免进行诸如 To_char,to_date,to_number 等转换2.有索引

oracle中一些sql以及存储过程小积累(转)

将当前日期转换为上一个月   SELECT TO_CHAR(ADD_MONTHS(SYSDATE, -1), 'yyyymm') --获取当前时间的前一个月             FROM DUAL; select sysdate from dual; /**获取当前时间到秒**/ select  sysdate-3 from dual;/**获取当前2天**/ select round(sysdate)  as 格式成日期 from dual; select to_date('2008-9-

oracle中Delete与Truncate语句的对比

一.delete语句 (1)有条件删除    语法格式:delete [from]  table_name  [where condition]; 如:删除users表中的userid为'001'的数据:delete from users where userid='001'; (2)无条件删除整个表数据      语法格式:delete  table_name; 如:删除user表中的所有数据:delete users ; 二.Truncate语句 使用Truncate语句是删除表中的所有记录