zoukankan      html  css  js  c++  java
  • 【层次查询】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 --
  • 相关阅读:
    DevEco Studio常用设置
    idea报错:Failed to execute goal org.codehaus.mojo:execmavenplugin:3.0.0:exec (defaultcli) on
    HarmonyOS实战 — 第一个入门 HelloWorld
    RabbitMQ入门之HelloWorld
    鸿蒙系统简介
    阿里云短信验证出现签名不合法(不存在或被拉黑)
    鸿蒙和安卓的对比
    关于 SVN 没有加锁 却在 update 和 commit 时 提示 有锁
    ibatis xml 数据库 批量新增 与批量删除
    看不懂的类型转换(有待解决)
  • 原文地址:https://www.cnblogs.com/adodo1/p/4327586.html
Copyright © 2011-2022 走看看