加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

行使CONNECT BY通过Oracle中的SQL查询获取条理布局中的全部父项

发布时间:2021-01-27 22:42:55 所属栏目:站长百科 来源:网络整理
导读:我正在赏识一些关于CONNECT BY用法的帖子.我必要找到的是,假如我想要得到全部怙恃(即,最多根)和一个节点的一个孩子,该怎么办,好比说4. 看来我必需行使以下两种的连系: – SELECT * FROM hierarchy START WITH id = 4 CONNECT BY id = PRIOR parentunion SEL

我正在赏识一些关于CONNECT BY用法的帖子.我必要找到的是,假如我想要得到全部怙恃(即,最多根)和一个节点的一个孩子,该怎么办,好比说4.

看来我必需行使以下两种的连系: –

SELECT  * 
 FROM    hierarchy 
 START WITH id = 4
 CONNECT BY id = PRIOR parent
union
     SELECT  *
     FROM    hierarchy
     WHERE LEVEL =<2
     START WITH
     id = 4
     CONNECT BY
     parent = PRIOR id

有没有更好的要领来做到这一点,一些更优化的办理要领?

办理要领

您应该可以或许行使子选择(和DISTINCT)来查找4的全部子项:

Select Distinct *
From hierarchy
Start With id In ( Select id
                   From hierarchy
                   Where parent = 4 )
Connect By id = Prior parent

行使UNION,您至少可以从第二个查询中删除CONNECT BY:

Select *
  From hierarchy
  Start With id = 4
  Connect By id = Prior parent
Union
  Select *
  From hierarchy
  Where parent = 4

永久不要行使SELECT *,始终为现实必要的列定名.这使您的查询更易于阅读,维护和优化.

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读