oracle的connect by 什么意思

查看:72
本文介绍了oracle的connect by 什么意思的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

见下面几个语句 (请问为什么第三个语句插入的数据只有一条, where 和 connect by的区别):

create table t1 as select rownum as id, rownum+1 as id2 from dual connect by level<=5;
select * from t1

create table t2 as select rownum as id, rownum+1 as id2 from dual connect by rownum <=5;
select * from t2

create table t3 as select rownum as id, rownum+1 as id2 from dual where rownum <=5;
select * from t3

解决方案

connect by 是oracle中特殊的递归查询的语法,多用于组织结构遍历、菜单树遍历等场景,如下面的一个功能菜单表,pid表示上级菜单的id,0表示无上级菜单,如果想查出顶级菜单下的所有菜单,可以用下面的写法:

id pid 
1 0
2 1
3 1
4 2
5 3

select *
from t
start with pid = 0
connect by pid = prior id

你给的例子中,是connect by的一个特殊用法,用来产生指定行的一个虚拟表。

这篇关于oracle的connect by 什么意思的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆