with t as
(select rownum from dual t CONNECT BY rownum <4)
select t.*,rownum from t CONNECT BY rownum < 5;
CONNECT BY(ROWNUM|LEVEL) 特殊用法解释(试着解释)
CONNECT BY 是sql内部建立递归查询的方式,该方法在层级查询以及 ROWNUM|LEVEL是同理,都是递归到最后限定的值or ROWNUM|LEVEL。
1) CONNECT BY ROWNUM (简单递归),上述例子中 with子查询中使用 CONNECT BY(ROWNUM|LEVEL) 生成固定的序列数(并不复杂而且二者效果一样),
都是使用伪列生成数据(咱用结果为 1,2,3 ),第二层(外层)sql语句中如果是 CONNECT BY ROWNUM, 则语句递归方式为简单方式,
例中第二层CONNECT BY rownum <5, 即只递归第一个数字(或其他字符)使其伪列达到规定边界CONNECT BY rownum <5 , 后再列出剩余数字(剩余数字不受限定影响)。
with t as
(select level from dual t CONNECT BY level <4)
select t.*,level from t CONNECT BY level < 5;
2)CONNECT BY LEVEL(复杂递归), with子句与上述相同上述例子中 with子查询中使用 CONNECT BY(