`
小杨学JAVA
  • 浏览: 903868 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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”子句

分享到:
评论

相关推荐

    Coherent Hierarchical Culling:Hardware Occlusion Queries Made Useful

    This is done by processing nodes of a spatial hierarchy in a front-to-back order and interleaving occlusion queries with rendering of certain previously visible nodes. The proposed scheduling of the ...

    hierarchical

    ### 层次狄利克雷过程 (Hierarchical Dirichlet Process, HDP) #### 概述 层次狄利克雷过程(Hierarchical Dirichlet Process, HDP)是一种非参数贝叶斯模型,用于处理涉及多组数据的聚类问题。在HDP中,每组数据...

    MULTIPLE OBJECT TRACKING BY HIERARCHICAL ASSOCIATION OF

    2010年ICIP会议最新文章关于多目标跟踪

    Hierarchical Dirichlet Process简介

    Hierarchical Dirichlet Process简单介绍

    Oracle_hierarchical_SQL_查询应用

    这种查询主要依赖于`START WITH`和`CONNECT BY`子句,配合`PRIOR`关键字来定义层级关系。下面我们将深入探讨这些概念及其用法。 1. **`START WITH`条件** `START WITH`子句用于指定查询的起始点,即层次结构中的...

    Hierarchical organization and structural flexibility

    Chloroplast thylakoid membranes accommodate densely packed protein complexes in ordered, often semi- crystalline arrays and are assembled into highly organized multilamellar systems, an organization ...

    个人Hierarchical softmax之CBOW推倒+知乎讲解.zip

    在自然语言处理领域,词嵌入(Word Embedding)是一种将词汇转化为连续向量表示的技术,其中Word2Vec是广泛应用的模型之一。本压缩包文件包含的资源主要围绕Hierarchical Softmax(层次Softmax)与CBOW(Continuous ...

    Hierarchical Graph Models for Conflict Resolution 2015

    Hierarchical Graph Models for Conflict Resolution 冲突消解的层次图模型

    Hierarchical Self-Organizing

    标题和描述中提到的知识点主要涉及“层次化自组织”(Hierarchical Self-Organizing)概念,具体来说,是在于使用一种或多种自组织映射(Self-Organizing Maps, SOM)来揭示数据的固有层次结构。我们下面将详细介绍该...

    Integrating Context and Occlusion for Car Detection by Hierarchical And-Or Model

    《基于层次And-Or模型的上下文与遮挡在车辆检测中的融合应用》 车辆检测是计算机视觉领域的重要研究方向,广泛应用于智能交通、自动驾驶、安全监控等多个领域。本研究聚焦于如何通过层次And-Or模型来提升车辆检测的...

    【Hierarchical RL】分层强化学习:Hierarchical-DQN算法

    【Hierarchical RL】分层强化学习:Hierarchical-DQN算法代码 Hierarchical-DQN (Hierarchical Deep Q-Network) 是一种分层强化学习算法,专门设计用于解决复杂的任务,通过将任务分解为层次化的子任务来学习。它...

    Hierarchical Bayesian Optimization Algorithm

    MartinPelikan HierarchicalBayesian Optimization Algorithm Towarda New Generation of Evolutionary Algorithms

    Hierarchical Reinforcement Learning with Hindsight

    分层强化学习(Hierarchical Reinforcement Learning, HRL)是强化学习领域的一个重要分支,其核心思想是通过将复杂的决策过程分解为若干层次的子任务来提高学习效率。本文讨论的论文标题为《Hierarchical ...

    Knowledge Graph Embedding with Hierarchical Relation Structure

    Knowledge Graph Embedding with Hierarchical Relation Structure 本文讲述了知识图谱嵌入(KGE)模型中的一种新的方法,即使用层次关系结构(Hierarchical Relation Structure,HRS)来嵌入知识图谱。传统的KGE...

    机器学习-层次聚类(hierarchical clustering)

    关于层次聚类(hierarchical clustering)的基本步骤: 1、假设每个样本为一类,计算每个类的距离,也就是相似度 2、把最近的两个合为一新类,这样类别数量就少了一个 3、重新新类与各个旧类(去了那两个合并的类)之间...

    Hierarchical Dirichlet Process 源代码

    Hierarchical Dirichlet Process(HDP)是一种非参数贝叶斯方法,用于建模具有层级结构的数据。在机器学习和自然语言处理领域,HDP被广泛应用于主题模型,它可以自动发现文档中的潜在主题,并推断出每个主题下的一...

    OrionA Hybrid Hierarchical Control Plane of.pdf

    In order to address this problem, some studies construct the flat control plane architecture; other studies build the hierarchical control plane architecture to improve the scalability of SDN. However...

    21-KDD-Scalable Hierarchical Agglomerative Clustering

    ### 21-KDD-Scalable Hierarchical Agglomerative Clustering #### 文献概述 本文档主要介绍了关于“可扩展的层次凝聚聚类算法”(Scalable Hierarchical Agglomerative Clustering, SHAC)的研究成果。该研究旨在...

Global site tag (gtag.js) - Google Analytics