以下内容来自http://hi.baidu.com/suofang/blog/item/a58bdd5829d5e583800a1812.html(其中的图片可到这个地址查看)
connect by prior start with 经常会被用到一个表中存在递归关系的时候。比如我们经常会将一个比较复杂的目录树存储到一个表中。或者将一些部门存储到一个表中,而这些部门互相有隶属关系。这个时候你就会用到connect by prior start with。
典型的使用方法就是:
select * from table connect by prior cur_id=parent_id start with cur_id=???
例如:
a b
1 0
2 1
3 1
4 2
5 3
如果想查找a=2及其下面的所有数据,则:
select * from table connect by prior a=b start with a=2
a b
2 1
4 2
这些只是基础,皮毛。其实只要你灵活的构造查询语句。可以得出意想不到的结果。比如生成树每一个路径。
但是这些记录组成的树必须正常才可以。如果有互为父子的情况,就会出现循环错误!
示例:
表结构图
表数据
select * from tb_cus_area_cde
--子取父
select * from tb_cus_area_cde a
CONNECT BY PRIOR a.c_snr_area=a.c_area_cde START WITH a.c_area_cde='1040101'
--父取子
select * from tb_cus_area_cde a
CONNECT BY PRIOR a.c_area_cde=a.c_snr_area START WITH a.c_snr_area is null
*************************自己总结 还是看CSDN吧,赛迪总是不好用http://writeblog.csdn.net/PostList.aspx*********************************
ORACLE查询树型关系(connect by prior start with)
有如下表结构:
create table TVideoSort
(
FsysId NVARCHAR2(32 char) not null,
FSortName NVARCHAR2(32 char),
FSortTopId NVARCHAR2(32 char),
FSortAddress number,
FSortIsList char(1),
constraint PK_TVIDEOSORT primary key (FsysId)
);
数据如下:
--子查父(通过子节点向根节点追朔.)
查询〔特下边〕的父节点
select FsysId,FSortName,FSortTopId,FSortAddress,FSortIsList from TVideoSort
start with FsysId='3703E5CD81E48D6BE040007F01001254'--这个是特下边的fsysid
connect by prior FSortTopId=FsysId
order by FsortAddress
结果
――父查子(通过根节点遍历子节点.)
查询〔特下边〕的子节点:结果
select FsysId,FSortName,FSortTopId,FSortAddress,FSortIsList
from TVideoSort start with FsysId='3703E5CD81E48D6BE040007F01001254' --这个是特下边的fsysid
connect by prior FsysId=FSortTopId order by FsortAddress
查询〔特长练习〕的子节点:结果
select FsysId,FSortName,FSortTopId,FSortAddress,FSortIsList
from TVideoSort start with FsysId='36AE4D68EC7D364CE040007F01000CA5'
connect by prior FsysId=FSortTopId order by FsortAddress
特别注意,两个查询只是FsysId=FSortTopId不同而已,即子查父则把FSortTopId做为主表放前面,父查子则把FsysId放前面作主表
分享到:
相关推荐
Oracle支持B树索引、位图索引、函数索引等多种类型,每种索引在不同的场景下都有其优势。正确地创建和使用索引可以显著提高查询速度,但过度索引也可能导致写操作性能下降。因此,平衡索引的利弊是优化过程中的重要...
正确选择索引类型(如B树、位图、函数索引等),并合理创建复合索引,可以减少全表扫描,提高查询速度。 - **执行计划分析**:理解SQL的执行计划,包括表的访问方式、连接顺序和排序操作,可以帮助识别性能瓶颈并...
选择合适的索引类型(如B树、位图或函数索引)至关重要。 4. **绑定变量**:使用绑定变量可以避免SQL硬解析,提高SQL语句的复用性,减少系统资源的消耗。 5. **提示(Hints)**:在SQL查询中添加提示可以指导优化器...
Oracle支持B树索引、位图索引、函数索引等多种类型。选择合适的索引类型能显著提高查询速度。例如,对于选择性较低的列,位图索引可能更有效;而对于频繁更新的列,B树索引可能是更好的选择。同时,索引的维护和重建...
### Oracle中树的操作 在Oracle数据库管理中,处理树形结构数据是一项常见需求。本文将详细介绍如何通过PL/SQL过程实现在Oracle数据库中复制树状节点,并将其作为一个新的树节点进行插入。 #### 1. 创建树形表结构...
根据提供的文件信息,本文将对《Oracle查询优化改写技巧与案例》这一主题进行详细的解析,涵盖Oracle查询优化的基本概念、重要性、改写技巧及其实际应用案例。 ### 一、Oracle查询优化概述 #### 1.1 查询优化定义 ...
### Oracle查询性能优化知识点详解 #### 一、注意WHERE子句中的连接顺序 **原则一:** ORACLE在解析WHERE子句时采用自下而上的顺序。为了提高查询效率,应确保表之间的连接条件写在其他WHERE条件之前,并且应该将...
- **`SELECT LEVEL, name AS name`**:`LEVEL`函数自动计算当前记录在其所属树中的层级深度,而`name`字段则显示产品类型名称。 - **`FROM t_product_type`**:指明数据来源表。 - **`START WITH id IN (SELECT id ...
例如,B树索引适用于范围查询,而位图索引则适用于大量重复值的列。 - **合理利用复合索引**:在多条件查询时,合理的复合索引可以显著提升查询效率。例如,在WHERE子句中使用了多个字段时,考虑创建这些字段的组合...
Oracle提供了多种类型的索引,如B树索引、位图索引和函数索引。理解执行计划和SQL优化是提升数据库性能的关键。 六、Oracle安全与权限 Oracle提供严谨的安全模型,通过用户、角色和权限进行访问控制。DBA可以创建...
### Oracle树查询详解 在Oracle数据库中,进行树形结构数据查询时,通常会用到`START WITH`和`CONNECT BY PRIOR`这两个关键语法。本文将详细介绍如何使用这两种方法来实现不同类型的树形结构查询,并通过具体示例...
InterMedia全文索引是Oracle提供的用于全文检索的索引类型,它能够支持复杂的文本查询,如关键词搜索、短语搜索等。这种索引通过对文档进行分词,并建立词与文档之间的关联,使得在海量文本数据中进行高效检索成为...
选择合适的索引类型(如B树、位图、函数索引)和策略(唯一性、复合索引、覆盖索引)能显著提升查询效率。例如,对于频繁用于连接或排序的列,建立索引可以加快操作速度;而对于更新频繁的列,过多的索引可能会增加...
正确选择索引类型(B树、位图、函数索引等)和创建覆盖索引能显著提高查询效率。避免在高频率更新的列上建立索引,因为这会增加写操作的成本。 3. **选择合适的连接方式** - 在JOIN操作中,了解不同的连接类型(内...
- **创建合适类型的索引**:B树索引适用于等值查询,位图索引适用于多值查询,函数索引用于函数依赖。 - **复合索引**:如果查询条件涉及多个列,考虑创建复合索引,将最常作为筛选条件的列放在前面。 - **唯一性...
B树、位图、索引组织表(IOT)等都是常见的索引类型,需根据数据分布和查询模式选择合适的索引类型。 2. **EXPLAIN PLAN**:Oracle提供了EXPLAIN PLAN工具,它可以帮助分析查询的执行计划,理解数据是如何被访问的...
Java通过JDBC(Java Database Connectivity)接口与Oracle进行交互,执行SQL查询来获取菜单数据。 3. **Servlet**:Servlet是Java Web开发中的核心组件,它扩展了Web服务器的能力,允许开发者创建动态的Web应用程序...
Oracle查询优化是数据库管理中的关键技能,尤其是在处理大型数据集时,有效的查询优化能显著提升系统性能,降低资源消耗。本实践主要关注如何利用Oracle数据库的特性与工具来改进SQL查询的执行效率。 首先,了解...
正确选择索引类型(如B树、位图、函数索引等),并合理创建组合索引,可以显著减少数据扫描的时间。 2. **执行计划分析**:通过EXPLAIN PLAN或DBMS_XPLAN工具,查看查询的执行路径,理解执行计划的逻辑,找出可能的...