Oracle connect by

level1 level2 level3
记录1 记录1 记录1
记录2
记录3
记录2 记录1
记录2
记录3
记录3 记录1
记录2
记录3
记录2 记录1 记录1
记录2
记录3
记录2 记录1
记录2
记录3
记录3 记录1
记录2
记录3
记录3 记录1 记录1
记录2
记录3
记录2 记录1
记录2
记录3
记录3 记录1
记录2
记录3
select * from table connect by level <= N;
connect by 当连接条件不能限制记录之间的关系时,每一条记录都可以作为自己或者其他记录的叶子。(这就是Oracle采用了深度优先的算法)
所以得到的记录总数为:
conut(level1) + count(level2) + count(level3);
sample: select * from table connect by level <= 10;(table中有10条记录)
       得到的记录数:10+ 10 *10 + 10 * 10 * 10 = 1110
原文地址:https://www.cnblogs.com/Uncho/p/4058789.html