select lpad(name,level*2+length(name),' ') name from sample x connect by prior_id = parent_id start with parent_id = 0; 以上语句能否解释一下.
应该是connect by prior id = parent_id 这里面的id和parent_id是列名 那条sql的意思是说,以parent_id=0的那些行为树根,进行查找, 如果某一行的parent_id与前面查出来的某行的id相等,则是满足条件的行。 在使用start with connect by的时候,where是在数据都查出来以后才进行过滤。而start with 中的条件(可以有多个条件),是在树状结构查出来之前起作用。即where是去掉不满足条件的若干点,而start with中的条件是剪掉整个支叉。
http://expert.csdn.net/Expert/topic/1774/1774674.xml?temp=.3117792
字段:id NUMBER(18)
name VARCHAR2(40)
parent_id NUMBER(18)
其中存放一个树形结构的内容。SQL> select lpad(name,level*2+length(name),' ') name
2 from sample x
3 connect by prior id = parent_id
4 start with parent_id = 0;效果可以如下。
name1
name2
name3
name4
name5
name6
name7
from sample x
connect by prior_id = parent_id
start with parent_id = 0;
以上语句能否解释一下.
这里面的id和parent_id是列名
那条sql的意思是说,以parent_id=0的那些行为树根,进行查找,
如果某一行的parent_id与前面查出来的某行的id相等,则是满足条件的行。
在使用start with connect by的时候,where是在数据都查出来以后才进行过滤。而start with 中的条件(可以有多个条件),是在树状结构查出来之前起作用。即where是去掉不满足条件的若干点,而start with中的条件是剪掉整个支叉。