oracle层次查询语句-创新互联

  Oracle中层次查询语法:

创新互联公司服务项目包括荆州网站建设、荆州网站制作、荆州网页制作以及荆州网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,荆州网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到荆州省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

   select ...

   [level | connect_by_root |connect_by_isleaf |connect_by_iscycle ]

   from table_name

   [where]

   connect by { prior col1=col2 | col1=prior col2 }

  [start with]

  [order [siblings] by];

connect by :说明每行数据将是按层次顺序检索,并规定将表中的数据连入树形结构的关系中。prior运算符必须放置在连接关系的两列中某一个的前面,对于子节点间的父子关系,prior运算符所在的一侧为父节点,另一侧的为子节点,从而确定查找树形结构的顺序是自顶向下还是自底向上。

start with:用于标识哪个节点作为查找树形结构的根节点,层次查询需要确定起始点,通过start with,后加条件。start with将确定将哪行作为root,如果不指定start with,则每行都当做root,然后查找其后代。start with后可以跟子查询,如果又where条件,则会截断层次中满足相关条件的节点,但不影响整个层次查询。

level:是一个伪列,代表当前这个节点所在的层级,对于根节点,level返回1,通过这个伪列结合其他oracle函数进行数据的格式化显示。

connect_by_root:connect_by_root必须和某个字段搭配使用,目的是获取根节点记录的字段信息。

connect_by_isleaf:判断当前结点是否为叶子节点,0表示非叶子节点,1表示是叶子节点。

connect_by_cycle:可以检查是否在树形查询的过程中构成循环,这个伪列只是在connect_by_cycle方式下有效。

order siblings by:定义返回时同意父节点下的各个兄弟节点之间的顺序。

例子:

--树形结构表emp; select * from emp; EMP_ID              EMP_NAME              UP_EMP_ID     ---------            ---------------         ---------------   1              USER1              0          2              USER2              1 3              USER3              1  4              USER4              2 5              USER5              2 6              USER6              3 --从根节点emp_id=1开始,自顶向下查询出根节点的所有子节点 select  emp_id,emp_name,up_emp_id,level from emp start with emp_id=1 connect by prior emp_id=up_emp_id order siblings by emp_id; EMP_ID                EMP_NAME           UP_EMP_ID                        LEVEL ---------              ---------------      ---------------                    -------- 1               USER1            0                       1 2               USER2            1                       2 4               USER4            2                       3 5               USER5            2                       3 3               USER3            1                       2 6               USER6            3                       3 --从emp_id=6,自底向上查询emp_id=6的所有父节点 select emp_id,emp_name,up_emp_id  from  emp start with emp_id=6 connect by emp_id = prior up_emp_id order by  emp_id; EMP_ID              EMP_NAME             UP_EMP_ID     ---------            ---------------        ---------------   1              USER1             0 3              USER3             1 6              USER6             3

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


本文名称:oracle层次查询语句-创新互联
网站网址:http://myzitong.com/article/dcihsp.html