【问题标题】:START WITH....CONNECT BY PRIOR开始于....连接之前
【发布时间】:2014-02-15 00:07:59
【问题描述】:

有人知道如何了解 CONNECT BY 的深度吗?例如,如果我有;

PARENT_ID   PARENT_KEY  CHILD_ID    CHILD_KEY
1           BOB         2           CHRIS
1           BOB         3           TODD
2           CHRIS       4           JON
2           CHRIS       5           ALF
5           ALF         6           GERARD
5           ALF         7           MIKE
3           TODD        8           ANN
3           TODD        9           FRED

CHRIS 的深度为 3,TODD 的深度为 2,如何以编程方式找出 CHRIS 和 TODD 的深度在哪里;

START WITH PARENT_KEY = 'BOB' CONNECT BY PRIOR CHILD_ID = PARENT_ID

对不起,我傻了……这里是给未来有脑残的人的答案;

SELECT
PARENT_KEY
, MAX(LEVEL) AS DEPTH
FROM TIMELINE_CONFIG
START WITH PARENT_KEY = 'BOB' CONNECT BY PRIOR CHILD_ID = PARENT_ID
GROUP BY PARENT_KEY

【问题讨论】:

    标签: sql oracle connect-by


    【解决方案1】:

    您可以使用 LEVEL 伪列:

    SELECT ..., LEVEL, ...
    FROM ...
    

    【讨论】:

      【解决方案2】:

      对不起,我傻了……这里是给未来有脑残的人的答案;

      SELECT
      PARENT_KEY
      , MAX(LEVEL) AS DEPTH
      FROM TIMELINE_CONFIG
      START WITH PARENT_KEY = 'BOB' CONNECT BY PRIOR CHILD_ID = PARENT_ID
      GROUP BY PARENT_KEY
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-06-17
        • 1970-01-01
        • 1970-01-01
        • 2012-04-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多