1.select ...connect by prior ...start with的用法:

select ... from <tablename>

where <conditional-1>    --过滤条件,用于对返回的所有记录进行过滤

start with <conditional-2>  --查询结果从起始根节点的限定条件

connect by prior <conditional-3> --连接条件

数据库表结构如下:

create table tablename

(

id number,

root_id number,

name varchar2(50),

desc varchar2(250)

)

insert into tablename(id,root_id,name,desc) values(1,0,'root','根节点');

insert into tablename(id,root_id,name,desc) values(2,1,'childnode1','子节点1');

insert into tablename(id,root_id,name,desc) values(3,1,'childnode2','子节点2');

insert into tablename(id,root_id,name,desc) values(4,0,'root2','根节点2');

insert into tablename(id,root_id,name,desc) values(5,4,'childnodeA','子节点1');

insert into tablename(id,root_id,name,desc) values(6,4,'childnodeB','子节点2');

得到完整树:

select * from tablename connect by prior id=root_id start with root_id=0

如果connect by prior 中的prior被省略,则查询将不进行深层递归。

如:

select * from tablename connect by id=root_id start with root_id=0

2.oracle中(+) (OUTER  JOIN)的用法

SELECT A.id,  B.IDD FROM A, B WHERE  A.id(+)=B.IDD
等价于
SELECT A.id,  B.IDD  FROM A   RIGHT OUTER  JOIN  B  ON ( A.id=B.IDD)

意思是 两表关联的时候,
B 表的数据, 全部检索出来。
A表的数据,则是在B表有相对应的数据的情况下,才检索出来。

oracle 中的select ...connect by prior ...start with 及(+)的用法的更多相关文章

  1. oracle中 start with .. connect by prior.. 用法简介

    我们经常会将一个比较复杂的目录树存储到一个表中.或者将一些部门存储到一个表中,而这些部门互相有隶属关系.这个时候你就会用到connect by prior start with.oracle 提供了s ...

  2. Oracle中start with...connect by (prior)子句的用法

    connect by 是结构化查询中用到的,基本语法是:select … from tablenamestart with 条件1connect by 条件2where 条件3; 例:select * ...

  3. Oracle中start with...connect by/start with…connect by prior子句的用法

    connect by 是结构化查询中用到的,其基本语法是:select … from tablenamestart with 条件1connect by 条件2where 条件3;例:select * ...

  4. Oracle递归查询start with connect by prior

    一.基本语法 connect by递归查询基本语法是: select 1 from 表格 start with ... connect by prior id = pId start with:表示以 ...

  5. oracle的start with connect by prior

    oracle的start with connect by prior是根据条件递归查询"树",分为四种使用情况: 第一种:start with 子节点ID='...' connec ...

  6. oracle的start with connect by prior如何使用

    oracle的start with connect by prior是根据条件递归查询"树",分为四种使用情况: 第一种:start with 子节点ID='...' connec ...

  7. oracle中 rownum 与 connect by的结合使用

    原文:http://blog.sina.com.cn/s/blog_a26966d90102wwkb.html oracle中 rownum 与 connect by的结合使用 SELECT ROWN ...

  8. 在ORACLE中实现SELECT TOP N的方法----[转]

    1.在ORACLE中实现SELECT TOP N 由于ORACLE不支持SELECT TOP语句,所以在ORACLE中经常是用ORDER BY跟ROWNUM的组合来实现SELECT TOP N的查询. ...

  9. oracle的START WITH CONNECT BY PRIOR用法

    转自:https://www.cnblogs.com/linjiqin/archive/2013/06/24/3152674.html Oracle 树操作(select…start with…con ...

随机推荐

  1. C++结构体中sizeof

    说明: 结构体的sizeof值,并不是简单的将其中各元素所占字节相加,而是要考虑到存储空间的字节对齐问题.这些问题在平时编程的时候也确实不怎么用到,但在一些笔试面试题目中出是常常出现,一.解释 现代计 ...

  2. BZOJ 3261: 最大异或和( 可持久化trie )

    搞成前缀和然后就可以很方便地用可持久化trie维护了.时间复杂度O((N+M)*25) -------------------------------------------------------- ...

  3. C++学习之指针的常见错误

    C++学习之指针的常见错误       我们在编程的过程中,有时候在使用指针的时候,删除一个指针以后一定要将这个指针设置为空指针,这是因为删除这个指针只是删除这个指针指向的地址,这个指针还真是的存在程 ...

  4. vcredist作用

    一.vcredist作用: vcredist_x86.exe是微软公司Visual C++的32位运行时库,包含了一些Visual C++的库函数. vcredist_x64.exe是微软公司Visu ...

  5. SQL Server 数据岸问题

    create table t2(x int constraint pk_t2 primary key);go insert into t2(x) values(1),(2),(3),(5),(7),( ...

  6. 批量添加target属性

    <script> addTarget(); function addTarget(){ var oa=document.getElementsByTagName('a'); for(var ...

  7. hdoj Scaena Felix

    Scaena Felix Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tota ...

  8. Eclipse、MyEclipse优化,提高运行速度

    MyEclipse 是公认的优秀的软件开发工具,使用非常广泛.相信很多人在使用的过程中,发现其运行速度比较慢,因为每次操作的背后,它调用了很多的命令,执行了很多操作:但是其中大部分的操作都是非必须的: ...

  9. c++程序内存泄露检測工具

    功能: 用于检測c++程序的内存泄露. 原理: 事实上非常easy,就是通过函数的重载机制,捕获应用程序的new, new[] , delete , delete[], malloc,calloc,f ...

  10. sql 查询所有数据库、表名、表字段总结

    ms sql server 1.查询所有表select [id], [name] from [sysobjects] where [type] = 'u' order by [name]2.查询所有数 ...