• 【层次查询】Hierarchical Queries之亲兄弟间的排序(ORDER SIBLINGS BY)


    http://blog.itpub.net/519536/viewspace-624176 有关层次查询之前的文章参考如下。 【层次查询】Hierarchical Queries之“树的遍历” http://space.itpub.net/519536/viewspace-623809 【层次查询】Hierarchical Queries之LEVEL应用 http://space.itpub.net/519536/viewspace-623916 【层次查询】Hierarchical Queries之CONNECT_BY_ISCYCLE伪列 http://space.itpub.net/519536/viewspace-624032 【层次查询】Hierarchical Queries之CONNECT_BY_ISLEAF伪列 http://space.itpub.net/519536/viewspace-624075 【层次查询】Hierarchical Queries之SYS_CONNECT_BY_PATH函数 http://space.itpub.net/519536/viewspace-624099 【层次查询】Hierarchical Queries之寻根问祖(CONNECT_BY_ROOT一元运算符) http://space.itpub.net/519536/viewspace-624114 在层次查询中,如果想让“亲兄弟”按规矩进行升序排序就不得不借助ORDER SIBLINGS BY这个特定的排序语句,若要降序输出可以在其后添加DESC关键字。 通过这个实验给大家展示一下这个“亲兄弟”间的排序功能。 1.回望关系“树”,这棵树中的B和C是亲兄弟,F和G是亲兄弟。注意,D和E不是亲兄弟,最多也就算是堂兄弟,“亲兄弟排序”功能对他们无效。 A / B   C /   / D   E / F   G 2.重温一下阐述上图的T表数据 sec@ora10g> select * from t; X                   Y          Z ---------- ---------- ---------- A                   1 B                   2          1 C                   3          1 D                   4          2 E                   5          3 F                   6          4 G                   7          4 7 rows selected. 3.我们对X列使用“ORDER SIBLINGS BY”进行升序排序,重点关注B和C、F和G的顺序。 sec@ora10g> select lpad(' ',level-1)||x tree, SYS_CONNECT_BY_PATH(x,'/') tree_path from t start with x = 'A' connect by prior y=z order siblings by x; TREE             TREE_PATH ---------------- ---------------- A                /A B               /A/B D              /A/B/D F             /A/B/D/F G             /A/B/D/G C               /A/C E              /A/C/E 7 rows selected. 4.我们对X列使用“ORDER SIBLINGS BY DESC”进行降序排序,重点关注B和C、F和G的顺序。 sec@ora10g> select lpad(' ',level-1)||x tree, SYS_CONNECT_BY_PATH(x,'/') tree_path from t start with x = 'A' connect by prior y=z order siblings by x desc; TREE             TREE_PATH ---------------- ---------------- A                /A C               /A/C E              /A/C/E B               /A/B D              /A/B/D G             /A/B/D/G F             /A/B/D/F 7 rows selected. 5.如在层次查询中错误的使用了“ORDER BY”进行排序,则层次查询中蕴含的遍历顺序将被打乱,剩下的将只是信息的罗列。 sec@ora10g> select lpad(' ',level-1)||x tree, SYS_CONNECT_BY_PATH(x,'/') tree_path from t start with x = 'A' connect by prior y=z order by x; TREE             TREE_PATH ---------------- ---------------- A                /A B               /A/B C               /A/C D              /A/B/D E              /A/C/E F             /A/B/D/F G             /A/B/D/G 7 rows selected. 6.小结 具体问题具体分析,特殊场合特出方法。在层次查询中如需对亲兄弟的先后顺序进行限定,就必须要使用特有的“ORDER SIBLINGS BY”而非“ORDER BY”子句。切记之。 Good luck. secooler 10.01.03 -- The End --
  • 相关阅读:
    重新点亮linux 命令树————网络配置的查看[十一三]
    重新点亮linux 命令树————网络管理[十一二]
    重新点亮linux 命令树————文件特殊权限[十一]
    重新点亮linux 命令树————权限的修改[十]
    重新点亮linux 命令树————文件权限和目录权限[九]
    重新点亮linux 命令树————用户和用户组的配置文件[八]
    重新点亮linux 命令树————su和sudo[七]
    综述|线结构光中心提取算法研究发展
    华为云服务功能总览
    国民技术芯片相关产业研发
  • 原文地址:https://www.cnblogs.com/adodo1/p/4327586.html
Copyright © 2020-2023  润新知