CONNECT BY ROWNUM
实验
select id from test;
结果:
id
1
2
3
4
5
SELECT ROWNUM,id
FROM
test
CONNECT BY ROWNUM <= 1;
ROWNUM id
1 1
2 2
3 3
4 4
5 5
SELECT ROWNUM,id
FROM
test
CONNECT BY ROWNUM <= 2;
ROWNUM id
1 1
2 1
3 2
4 3
5 4
6 5
这样比上面多出来一条,至于原来为什么是这样的结果,网上也没找到让我信服的解释
那么,就自我总结下,CONNECT BY 是迭代的语句,他会从第一条开始,然后去找ROWNUM<=2的数据就是他自己本身,此时会将自己当做第二条数据ROWNUM就是2,接下来去找表中的第二条数据,但是ROWNUM已经是3,所以第一条的迭代结束,第二条开始。。。
那么不管CONNECT BY 后面ROWNUM<=n,检索出来的数据都是n+表中数据-1,而且第一条会被检索出来n次,剩下的只会检索出来一件