- 浏览: 281044 次
- 性别:
- 来自: 江西
文章分类
最新评论
-
wzxxzw519:
多谢哈哈哈哈哈
eclipse左边导航package explorer自动定位 -
jmq2007:
感谢!
eclipse安装maven插件,处理无Maven Pom editor打开方式问题 -
sswh:
非常感谢!不过一个maven插件的安装就弄得这样麻烦(Ecli ...
eclipse安装maven插件,处理无Maven Pom editor打开方式问题 -
摇曳的风:
谢谢,刚知道。
eclipse左边导航package explorer自动定位 -
张阿三:
不错!
将win7电脑变身WiFi热点,让手机、笔记本共享上网
对于connect by,现在大多数人已经很熟悉了
connect by中的条件就表示了父子之间的连接关系
比如 connect by id=prior pid
但如果connect by中的条件没有表示记录之间的父子关系
那会出现什么情况?
常见的,connect by会在构造序列的时候使用
用select rownum from dual connect by rownum<xxx 代替早期版本的 select rownum from all_objects where rownum <xxx
我们注意到,dual是一个只有一条记录的表,如果表有多条记录,将会怎样?
下面开始实验
环境:windows xp sp2 + Oracle 9208
(10.1版本connect by有问题)
CREATE TABLE T
(
ID VARCHAR2(1 BYTE)
);
INSERT INTO T ( ID ) VALUES (
'A');
INSERT INTO T ( ID ) VALUES (
'B');
INSERT INTO T ( ID ) VALUES (
'C');
COMMIT;
I LEVEL
- ----------
A 1
B 1
C 1
SQL> select id,level from t connect by level<3;
I LEVEL
- ----------
A 1
A 2
B 2
C 2
B 1
A 2
B 2
C 2
C 1
A 2
B 2
C 2
已选择12行。
SQL> select id,level from t connect by level<4;
I LEVEL
- ----------
A 1
A 2
A 3
B 3
C 3
B 2
A 3
B 3
C 3
C 2
A 3
B 3
C 3
B 1
A 2
A 3
B 3
C 3
B 2
A 3
B 3
C 3
C 2
A 3
B 3
C 3
C 1
A 2
A 3
B 3
C 3
B 2
A 3
B 3
C 3
C 2
A 3
B 3
C 3
已选择39行。
无需多说,我们很快可以找到其中的规律,假设表中有N条记录
则记F(N,l)为 select id,level from t connect by level<l 的结果集数目
那么,
F(N,1)=N
F(N,l) = F(N,l-1)*N+N
于是可以总结出
F(N,l)=∑power(N,p), p取值为[1,l)
要解释,也很容易
当连接条件不能限制记录之间的关系时
每一条记录都可以作为自己或者其他记录的叶子
如下所示:
A 1
A 2
B 2
C 2
B 1
A 2
B 2
C 2
C 1
A 2
B 2
C 2
在这里,我们看到的是
Oracle采用了深度优先的算法
http://www.blogjava.net/wxqxs/archive/2008/08/15/222338.html
http://www.cnblogs.com/lettoo/archive/2010/08/03/1791239.html
发表评论
-
Oracle文件恢复成实例的过程
2013-03-04 10:28 10081. 适用条件 1. ... -
设置oracle实例自动启动
2013-03-04 10:25 931ORACLE的服务是自动启动的,但是 ... -
ORA-01034: ORACLE not available
2013-03-01 14:07 945C:\Documents and Settings\Adm ... -
连接Oracle 9i时ORA-12514: TNS: 监听进程不能解析在连接描述符中给出的 SERVICE_NAME 错误的解决
2013-03-01 14:03 1119“tnsping 监听名” 没 ... -
ORACLE 建立DBLINK详细讲解
2013-02-21 10:44 8301 ORACLE 建立DB-LINK 测试条件: 假设 ... -
oracle PL/SQL的基本构成,块结构和基本语法要求,数据类型,变量定义,运算符和函数
2013-02-20 11:30 899特点 PL/SQL语言是SQL语言的扩展,具有为程序开发而设 ... -
oracle PL/SQL的基本构成,结构控制语句,分支结构,选择结构,loop循环结构,
2013-02-20 11:29 941分支结构 分支结构是最基本的程序结构,分支结构由IF语句实现 ... -
oracle 隐式游标,显示游标,游标循环,动态SELECT语句和动态游标,异常处理,自定义异常,
2013-02-20 11:28 891游标的概念: 游标是SQL的一个内存工作区,由系统或 ... -
oracle 触发器的种类和触发事件,DML触发器,DDL事件触发器,替代触发器,查看触发器,
2013-02-20 11:26 858触发器的种类和触发事 ... -
oracle 创建,删除存储过程,参数传递,创建,删除存储函数,存储过程和函数的查看,包,系统包
2013-02-20 11:14 821认识存储过程和函数 存储过程和函数也是一种PL/SQL块, ... -
Oracle中timestamp转换成date
2012-08-16 13:46 2338获得当前时间: select sysdate from du ... -
oracle数据库约束条件删除、取消、启用
2012-07-26 16:29 1329在进行数据库进行操作时,由于各个表的约束条件限制,进行数据批量 ... -
oracle 命令整理
2012-07-18 10:04 885SQL> show linesize lin ... -
Oracle10g--plSql命令1
2012-07-18 09:56 981附录B SQL*PLUS Sql*plus ... -
oracle decode 用法
2012-04-28 16:35 754decode()函數使用技巧·软 ... -
修改PL/SQL日期显示格式
2012-04-01 10:09 2084Oracle中的TIMESTAMP数据类型很多人用的都很少 ... -
Oracle中的Union、Union All、Intersect、Minus
2011-11-22 09:59 735众所周知的几个结果 ... -
Oracle相关查询
2011-11-02 09:30 796select * from TBEMPLOYEEINFO fo ... -
Oracle批量修改、创建用户表所在的表空间、索引,序列
2011-11-02 09:19 1445sql> spool on sq ... -
Win7 安装oracle 10g
2011-11-01 11:30 917oracle在win7中是不能正常安装的,需要修改 ...
相关推荐
本文章详细介绍了Oracle中connect by...start with...的用法。
Connect By 可以列出上下级关系 构造序列 求排列组合 逆转求出下上级的关系路径
oracle中 connect by prior 递归算法 Oracle中start with...connect by prior子句用法 connect by 是结构化查询中用到的
oracle中的数查询,介绍的详细,有例子。
connect by:connect by是必须的,start with有些情况是可以省略的,或者直接start with 1=1不加限制 prior:prior关键字可以放在等号的前面,也可以放在等号的后面,表示的意义是不一样的,比如 prior id = pid,...
。。。
。。。
行列转换,层级关系,oracle sys_connect_by_path的用法
NULL 博文链接:https://yunqiang-zhang-hotmail-com.iteye.com/blog/1312354
Oracle_start_with_connect_by_prior_用法[文].pdf
Oracle 数据库树形结构用法总结,例如SYS_CONNECT_BY_PATH 、START WITH . . . CONNECT BY . . .等具体语法介绍
很多场合我们都会用到...sys_connect_by_path(字段名, 2个字段之间的连接符号),这里的连接符号不要使用逗号,oracle会报错,如果一定要用,可以使用replace替换一下,方法如下 REPLACE(字段名,原字符,’,’)。这个
oracle 常用函数,connect by用法,分页方法
今天无意间,看connect by的使用,看到了sys_connect_by_path的用法,算是给我一个另类的惊喜了,sys_connect_by_path(columnname, seperator) 也可以拼出串来,不过这个函数本身不是用来给我们做这个结果集连接用...
7.1 基本的GROUP BY用法 171 7.2 HAVING子句 174 7.3 GROUP BY的“新”功能 175 7.4 GROUP BY的CUBE扩展 175 7.5 CUBE的实际应用 179 7.6 通过GROUPING()函数排除空值 185 7.7 用GROUPING()来扩展报告 186 ...
Oracle 递归查询, start with connect by prior 用法 find_in_set 函数 concat,concat_ws,group_concat 函数 MySQL 自定义函数 手动实现 MySQL 递归查询 Oracle 递归查询 在 Oracle 中是通过 start ...
系统级的环境变量一般在/etc/profile 文件中定义 在 CAMS 系统 与数据库 相关的环境变量就定义在/etc/profile 文件中 如下所示 export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=$ORACLE_BASE/...
下面按类别列出一些ORACLE用户常用数据字典的查询使用方法。 1、用户 查看当前用户的缺省表空间 SQL>select username,default_tablespace from user_users; 查看当前用户的角色 SQL>select * from user_...