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;
查询结果如下: