`
直线曲线
  • 浏览: 46732 次
  • 性别: Icon_minigender_1
  • 来自: 河北
社区版块
存档分类
最新评论

掌握start with connect by 应用:按顺序列转行

阅读更多
通过下边的例子展示了start with  connect by 的用法。
start with expr 可以理解为,从expr处我要形成树,也就是起点;
connect by expr 表示expr成立时才放到树中作为一个节点,同样也连接了上层和下层。
create table treetest (col1 varchar2(4),col2 varchar2(4));
insert into treetest values ('1','你');
insert into treetest values ('1','好');
insert into treetest values ('1','哦');
insert into treetest values ('1','好');
insert into treetest values ('2','天');
insert into treetest values ('2','上');
insert into treetest values ('2','地');
insert into treetest values ('2','下');
insert into treetest values ('3','美');
insert into treetest values ('3','丽');
insert into treetest values ('3','一');
insert into treetest values ('3','天');
//查出行号,便于排序
select rownum num,t3.col1,t3.col2 from treetest t3;
//forConnectBy区分不同树,connect by 处用,forStartWith在同树中的顺序,start with 处用
select t1.col1 c1,to_number(t1.col1)+row_number() over (order by t1.num) forConnectBy,
row_number() over(partition by t1.col1 order by t1.col1) forStartWith,t1.col2 c3
 from (select rownum num,t3.col1,t3.col2 from treetest t3) t1;
//sys_connect_by_path(expr,'分隔符'),start with 从这里开始找树,connect by 连接成一棵树的条件
select replace(max(sys_connect_by_path(t2.c3,'/')),'/','') 
from (select t1.col1 c1,to_number(t1.col1)+row_number() over (order by t1.num) forConnectBy,
row_number() over(partition by t1.col1 order by t1.col1) forStartWith,t1.col2 c3
 from (select rownum num,t3.col1,t3.col2 from treetest t3) t1) t2
 start with t2.forStartWith = 1 
 connect by prior t2.forConnectBy = t2.forConnectBy - 1 group by t2.c1 order by t2.c1;

输出结果:你好哦好   天上地下  美丽一天
分享到:
评论

相关推荐

    树状数据库表:Oracle中start with...connect by prior子句用法

    本文将详细讲解如何利用`START WITH...CONNECT BY PRIOR`子句来构建和查询树形数据库表。 `START WITH...CONNECT BY PRIOR`是Oracle SQL中的一个特性,用于处理具有层级关系的数据。这个子句允许我们遍历和查询具有...

    Oracle_start_with_connect_by_prior_用法

    ### Oracle中的START WITH CONNECT BY PRIOR 用法详解 #### 一、概念介绍 在Oracle数据库中,`START WITH` 和 `CONNECT BY PRIOR` 是两个非常强大的特性,主要用于处理具有层级结构的数据。这两个特性可以帮助我们...

    Oracle start with.connect by prior子句实现递归查询

    ### Oracle Start With.Connect By Prior 子句实现递归查询 #### 概述 在Oracle数据库中,`Start With.Connect By Prior`子句是执行递归查询的一种强大工具,主要用于处理层次结构数据。这类数据通常存在于组织...

    connect by的使用探索

    [ WHERE condition ][ [ START WITH condition ] CONNECT BY condition [ ORDER SIBLINGS BY expression ] ] ``` 其中,`START WITH`子句用于指定查询的起始节点,`CONNECT BY`子句用于指定查询的递归条件。 ...

    oracle数据库startwith用法

    ### Oracle数据库中的START WITH 和 CONNECT BY 用法详解 在Oracle数据库中,处理层次结构数据时,`START WITH` 和 `CONNECT BY` 是非常有用的两个关键字。这些关键字可以帮助我们在查询时构建出树形或者层级结构的...

    Oracle递归查询start with connect by prior的用法

    connect by:connect by是必须的,start with有些情况是可以省略的,或者直接start with 1=1不加限制 prior:prior关键字可以放在等号的前面,也可以放在等号的后面,表示的意义是不一样的,比如 prior id = pid,...

    oracle connect by level 应用

    在实际应用中,`CONNECT BY`可以与其他SQL功能结合使用,如`WHERE`子句筛选特定层级、`ORDER BY`控制输出顺序,甚至与PL/SQL一起构建复杂的业务逻辑。熟练掌握`CONNECT BY`和`LEVEL`,能够让你在处理层级数据时...

    MySQL多种递归查询方法.docx

    在Oracle数据库中,递归查询可以通过`START WITH CONNECT BY PRIOR`语句实现。此语句允许用户按照树状结构来检索数据。 ##### 1. `START WITH CONNECT BY PRIOR`用法详解 **基本语法**: ```sql SELECT * FROM ...

    ORACLE查询树型关系(connect_by_prior_start_with)

    使用 START WITH 和 CONNECT BY 子句可以实现 SQL 的层次查询,并且可以使用 SYS_CONNECT_BY_PATH 函数和 CONNECT_BY_ROOT、CONNECT_BY_ISLEAF、CONNECT_BY_ISCYCLE 等伪列函数来增强层次查询的能力。

    start connect by

    在SQL查询中,`START WITH` 和 `CONNECT BY` 是两个关键的子句,它们用于构建层次结构查询,通常在处理具有上下级关系的数据时非常有用,如员工与经理的关系、组织结构或者产品分类等。这两个子句是Oracle数据库特有...

    connect by prior数据库树的应用

    ### Connect By Prior 数据库树的应用 #### 概述 在关系型数据库中,尤其是在 Oracle 数据库环境下,构建和查询层次结构数据是一项常见的需求。通过使用 `Connect By Prior` 存储过程,我们可以有效地处理这类问题...

    Oracle_start_with_connect_by_prior_用法[文].pdf

    其中,CONNECT BY 与 START WITH 语句的顺序不影响查询的结果,[WHERE 条件 1] 可以不需要。[WHERE 条件 1]、[条件 2]、[条件 3] 各自作用的范围都不相同: * [WHERE 条件 1] 是在根据 “CONNECT BY [条件 2] START...

    Oracle中connect by...start with...的使用

    本文章详细介绍了Oracle中connect by...start with...的用法。

    connect by的使用

    - 可以使用`WHERE`子句在查询中添加额外的过滤条件,但要注意,`WHERE`子句应在`START WITH`之后,`CONNECT BY`之前,否则可能无法正确处理层级关系。 5. **使用示例** 假设我们有一个部门表`DEPARTMENTS`,包含`...

    浅谈Oracle下connect by原理.pdf

    Oracle是甲骨文公司的一款关系型...使用Connect By进行查询时,需要特别注意循环关系的处理,以及正确地使用`START WITH`、`CONNECT BY`子句和相关伪列。掌握这些知识点,对于Oracle数据库开发人员来说是必不可少的。

    Oracle的Connect By使用示例

    Oracle数据库通过提供`START WITH...CONNECT BY`语句来简化这类查询操作。此功能最早出现在Oracle 8.1.6版本,并一直沿用至今,成为处理递归查询的强大工具之一。 #### 二、Connect By与Start With详解 1. **...

    解决Node.js使用MySQL出现connect ECONNREFUSED 127.0.0.1:3306的问题

    在本例中,Node.js应用试图连接到`127.0.0.1:3306`,这是MySQL默认的监听地址和端口。 **问题分析:** 1. **数据库未安装**:确保已正确安装MySQL数据库,并且数据库服务正在运行。 2. **数据库未启动**:检查MySQL...

    connect_by_prior_递归算法

    ### Oracle中的Connect By Prior递归算法详解 ...通过正确地设置`START WITH`、`CONNECT BY`和`WHERE`子句,可以有效地查询和分析复杂的数据结构。理解其工作原理有助于更好地利用Oracle的功能来满足各种业务需求。

    Oracle递归树形结构查询功能

    递归树形结构查询主要依赖于`CONNECT BY`和`PRIOR`关键字,它们允许我们构建复杂的层级查询,以展示数据的层次关系。 在Oracle中,树形结构查询的基本语法如下: ```sql SELECT [LEVEL], * FROM table_name START ...

Global site tag (gtag.js) - Google Analytics