在分层查询中使用 Prior
Use of Prior in Hierarchical Query
我正在尝试在我的项目中实现分层查询。我已经阅读了互联网上的大部分文档,但无法获得与其中使用 PRIOR 相关的信息。
SELECT EMPNO,ENAME,MGR,LEVEL
FROM TMP_PCH
CONNECT BY PRIOR EMPNO=MGR
START WITH MGR IS NULL;
PRIOR 在此查询中起着重要作用,但更改 PRIOR 的位置或将其从查询中删除会得到不同的结果。
如果你能帮助我理解它的确切用法,那将非常有帮助。
谢谢:)
层次结构意味着,table 的一行是 "parent",而另一行是 "child"。 PRIOR
用来表示谁是谁。子句 CONNECT BY PRIOR EMPNO = MGR
表示,如果两行具有相同的值,但第一行在一列 EMPNO
中,第二行在一列 MGR
中,则第二行是 "parent",第一个是 "child"。所以,查询
SELECT EMPNO,ENAME,MGR,LEVEL
FROM TMP_PCH
CONNECT BY PRIOR EMPNO = MGR
START WITH MGR = 'John'
returns John 的所有下属(和 John 本身),并查询
SELECT EMPNO,ENAME,MGR,LEVEL
FROM TMP_PCH
CONNECT BY PRIOR MGR = EMPNO
START WITH MGR = 'John'
returns John 的所有老板(和 John 本身)。
你可以把PRIOR
理解为对上一层的引用。
PRIOR MGR = EMPNO
表示 "the manager from the previous level is now the employee",所以我们要自下而上
PRIOR EMPNO = MGR
表示 "the employee from the previous level is now the manager",所以我们要自上而下
这样写的时候EMPNO = PRIOR MGR
,可以读成"we go the direction from an employee to his manager"
自下而上
MGR
PRIOR MGR EMPNO
PRIOR EMPNO
与自上而下
PRIOR MGR
PRIOR EMPNO MGR
EMPNO
我正在尝试在我的项目中实现分层查询。我已经阅读了互联网上的大部分文档,但无法获得与其中使用 PRIOR 相关的信息。
SELECT EMPNO,ENAME,MGR,LEVEL
FROM TMP_PCH
CONNECT BY PRIOR EMPNO=MGR
START WITH MGR IS NULL;
PRIOR 在此查询中起着重要作用,但更改 PRIOR 的位置或将其从查询中删除会得到不同的结果。
如果你能帮助我理解它的确切用法,那将非常有帮助。
谢谢:)
层次结构意味着,table 的一行是 "parent",而另一行是 "child"。 PRIOR
用来表示谁是谁。子句 CONNECT BY PRIOR EMPNO = MGR
表示,如果两行具有相同的值,但第一行在一列 EMPNO
中,第二行在一列 MGR
中,则第二行是 "parent",第一个是 "child"。所以,查询
SELECT EMPNO,ENAME,MGR,LEVEL
FROM TMP_PCH
CONNECT BY PRIOR EMPNO = MGR
START WITH MGR = 'John'
returns John 的所有下属(和 John 本身),并查询
SELECT EMPNO,ENAME,MGR,LEVEL
FROM TMP_PCH
CONNECT BY PRIOR MGR = EMPNO
START WITH MGR = 'John'
returns John 的所有老板(和 John 本身)。
你可以把PRIOR
理解为对上一层的引用。
PRIOR MGR = EMPNO
表示 "the manager from the previous level is now the employee",所以我们要自下而上
PRIOR EMPNO = MGR
表示 "the employee from the previous level is now the manager",所以我们要自上而下
这样写的时候EMPNO = PRIOR MGR
,可以读成"we go the direction from an employee to his manager"
自下而上
MGR
PRIOR MGR EMPNO
PRIOR EMPNO
与自上而下
PRIOR MGR
PRIOR EMPNO MGR
EMPNO