Oracle SQL中的连接方式

Oracle SQL中的连接方式,sql,oracle,hierarchical-query,Sql,Oracle,Hierarchical Query,假设我们有下面的表格 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

假设我们有下面的表格

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;
据我所知,此代码从employee中选择
empno
manager\u id
ename
,它从
empno=1
的此行开始选择,但无法理解此行的作用:

CONNECT BY PRIOR empno = manager_id;
这是否等同于:

where empno=manager_id?

查询是递归的,它从雇员1(可能是CEO)开始,然后递归地打印他的所有下属,然后是他们的所有下属,依此类推(直到所有雇员都打印出来)

关于“开始”和“连接方式”,可以找到一个很好的解释

这将产生递归。属于下一个较低层次的所有记录都将返回。这将返回所有经理及其各自下属从上到下的层次结构

30 (manager_id)
   12 
   5 (manager_id)
      1
      7
20 (manager_id)
   15
   10

所以,我怎么能猜到我是否需要这样的代码来选择某个东西呢?只要你想得到某个具有父子关系的东西。
30 (manager_id)
   12 
   5 (manager_id)
      1
      7
20 (manager_id)
   15
   10