CONNECT_BY_ROOT关键字介绍

说明:

CONNECT_BY_ROOT给层次查询的表达式指定数据来源于根行

语法:

connect_by_root ::=

参数:

Expr只能是一个表达式(包括支持列名、常数的情况),表示Expr中列的值都来自根行。

注释:

CONNECT_BY_ROOT是一个一元操作符,它指明其后的操作数是来自根行。这个关键字的实现不完全和ORACLE兼容,这里的主要区别在于ORACLE的CONNECT_BY_ROOT关键字可以出现在ORDER SIBLINGS BY子句和SYS_CONNECT_BY_PATH函数中,以及可以与PRIOR混用,而神通数据库则不能。但是这些情况中ORACLE表现的有时也不是很好,比如在CONNECT_BY_ROOT后面加PRIOR的话,那么可能会导致ORACLE内部出错,或者导致连接断开。CONNECT_BY_ROOT关键字可以出现的位置有目标列、ORDER BY子句、聚集函数、GROUP BY子句、HAVING子句和WHERE子句,不可以出现在CONNECT BY子句、START WITH子句、ORDER SIBLINGS BY子句中,也不能与自身嵌套或与PRIOR或SYS_CONNECT_BY_PATH混合使用。

示例:

使用CONNECT_BY_ROOT关键字的例子

查询语句如下:

SELECT employee_id, CONNECT_BY_ROOT employee_id rt_empid, last_name, manager_id FROM EMPLOYEES CONNECT BY PRIOR employee_id = manager_id;

查询结果如下:

../../../../_images/image814.png