小编典典

在Oracle SQL中进行连接

sql

假设我们有以下表格

create table Employee(
  2    EMPNO         NUMBER(3),
  3    ENAME         VARCHAR2(15 BYTE),
  4    HIREDATE      DATE,
  5    ORIG_SALARY   NUMBER(6),
  6    CURR_SALARY   NUMBER(6),
  7    REGION        VARCHAR2(1 BYTE),
  8    MANAGER_ID    NUMBER(3)
  9  )

create table job (
  2    EMPNO         NUMBER(3),
  3    jobtitle      VARCHAR2(20 BYTE)
  4  )
  5  /

我对以下查询的作用感兴趣

SELECT empno, manager_id, ename
  2  FROM employee
  3  START WITH empno = 1
  4  CONNECT BY PRIOR empno = manager_id;

我的理解,这个代码选择empnomanager_idename从员工,它开始选择从该行地方empno=1,但不明白这行做了什么:

CONNECT BY PRIOR empno = manager_id;

是否与以下内容相同:

where empno=manager_id?

阅读 163

收藏
2021-03-17

共1个答案

小编典典

CONNECT BY PRIOR empno = manager_id;

这将产生递归。将返回属于下一个较低层次级别的所有记录。这将为所有经理及其下属工作人员从上到下返回一个层次结构。

30 (manager_id)
   12 
   5 (manager_id)
      1
      7
20 (manager_id)
   15
   10
2021-03-17