见下面几个语句 (请问为什么第三个语句插入的数据只有一条, 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表示无上级菜单,如果想查出顶级菜单下的所有菜单,可以用下面的写法:
你给的例子中,是connect by的一个特殊用法,用来产生指定行的一个虚拟表。