使用CONNECT BY通过Oracle中的SQL查询获取层次结构中的所有父项
发布时间:2021-01-29 09:47:37  所属栏目:百科  来源:网络整理 
            导读:我正在浏览一些关于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 *,始终为实际需要的列命名.这使您的查询更易于阅读,维护和优化. (编辑:52站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!  | 
                  

