我的博客居然被人copy
2006-12-30 00:53
309 查看
有个数据库表结构设计如下:
create table DEPT(
ID NUMBER(9) PRIMARY KEY, --部门ID
NAME VARCHAR2(100), --部门名称
PARENT_ID NUMBER(9) --父级部门ID,通过此字段与上级部门关联
);
数据如下:
按照这种查询会出现一个想要的分组结构
SELECT T.*, ROWNUM
FROM DEPT T
START WITH T.PARENT_ID = 0
CONNECT BY PRIOR T.ID = T.PARENT_ID
具体讲解如下:
语法:
select *
from 表名
where 条件1
start with 条件2
connect by prior 当前表字段=级联表字段
start with与connect by prior语句完成递归记录,形成一棵树形结构,通常可以在具有层次结构的表中使用。
start with表示开始的记录
connect by prior 指定与当前记录关联时的字段关系
代码:
--创建部门表,这是一个具有层次结构的表,子记录通过parent_id与父记录的id进行关联 create table DEPT(
ID NUMBER(9) PRIMARY KEY, --部门ID
NAME VARCHAR2(100), --部门名称
PARENT_ID NUMBER(9) --父级部门ID,通过此字段与上级部门关联
);
向表中插入如下数据,为了使代码简单,一个部门仅具有一个下级部门
●从根节点开始查询递归的记录
select *
from dept
start with id=1
connect by prior id = parent_id; 下面是查询结果,start with id=1表示从id=1的记录开始查询,向叶子的方向递归,递归条件是id=parent_id,当前记录的id等于子记录的parent_id ●从叶子节点开始查询递归的记录
select *
from dept
start with id=5
connect by prior parent_id = id;
下面是查询结果,递归条件按照当前记录的parent_id等与父记录的id
●对查询结果过滤
select *
from dept
where name like '%销售%'
start with id=1
connect by prior id = parent_id;
在下面的查询结果中可以看到,首先使用start with... connect by prior查询出树形的结构,然后where条件才生效,对全部查询结果进行过滤
●prior的作用 prior关键字表示不进行递归查询,仅查询出满足id=1的记录,下面是将第一个查询去掉prior关键字后结果
select *
from dept
start with id=1
connect by prior id = parent_id;
本文出自 “与青春有关的日子” 博客,请务必保留此出处http://zhangdivy.blog.51cto.com/1647167/953894
create table DEPT(
ID NUMBER(9) PRIMARY KEY, --部门ID
NAME VARCHAR2(100), --部门名称
PARENT_ID NUMBER(9) --父级部门ID,通过此字段与上级部门关联
);
数据如下:
按照这种查询会出现一个想要的分组结构
SELECT T.*, ROWNUM
FROM DEPT T
START WITH T.PARENT_ID = 0
CONNECT BY PRIOR T.ID = T.PARENT_ID
具体讲解如下:
语法:
select *
from 表名
where 条件1
start with 条件2
connect by prior 当前表字段=级联表字段
start with与connect by prior语句完成递归记录,形成一棵树形结构,通常可以在具有层次结构的表中使用。
start with表示开始的记录
connect by prior 指定与当前记录关联时的字段关系
代码:
--创建部门表,这是一个具有层次结构的表,子记录通过parent_id与父记录的id进行关联 create table DEPT(
ID NUMBER(9) PRIMARY KEY, --部门ID
NAME VARCHAR2(100), --部门名称
PARENT_ID NUMBER(9) --父级部门ID,通过此字段与上级部门关联
);
向表中插入如下数据,为了使代码简单,一个部门仅具有一个下级部门
●从根节点开始查询递归的记录
select *
from dept
start with id=1
connect by prior id = parent_id; 下面是查询结果,start with id=1表示从id=1的记录开始查询,向叶子的方向递归,递归条件是id=parent_id,当前记录的id等于子记录的parent_id ●从叶子节点开始查询递归的记录
select *
from dept
start with id=5
connect by prior parent_id = id;
下面是查询结果,递归条件按照当前记录的parent_id等与父记录的id
●对查询结果过滤
select *
from dept
where name like '%销售%'
start with id=1
connect by prior id = parent_id;
在下面的查询结果中可以看到,首先使用start with... connect by prior查询出树形的结构,然后where条件才生效,对全部查询结果进行过滤
●prior的作用 prior关键字表示不进行递归查询,仅查询出满足id=1的记录,下面是将第一个查询去掉prior关键字后结果
select *
from dept
start with id=1
connect by prior id = parent_id;
本文出自 “与青春有关的日子” 博客,请务必保留此出处http://zhangdivy.blog.51cto.com/1647167/953894
相关文章推荐
- 我的博客居然被人copy
- 震惊,我居然开启了博客
- 小工具:ssh-copy-id_老王的技术手册 ( 我的新博客:http://huoding.com )_百度空间
- 居然说博客没激活
- 我的CSDN博客居然一直被人误解着
- 我写的博客居然是百度搜索第一名 - 感谢国家 …
- lai18居然偷偷转载博客,并且盗用我的博客名字
- 可恶的CSDN,博客中高级选项中的插入代码居然不能用了
- 我写的博客居然是百度搜索第一名 - 感谢国家 …
- 新人如何搭建(copy)一个属于自己的博客
- 2013CSDN博客之星评选——我居然是候选人!
- 黑马程序员——IOS开发学习:retain和copy的区别——黑马 ios 技术博客
- 目前我的破博客居然价值176 RMB!
- 从SQLBulkCopy到周公的博客
- 2013CSDN博客之星评选——我居然是候选人!
- 居然忘记拷Hexo文件了,在老家更新不了博客,现在这里更新吧。
- 博客出什么异常了,首页居然看不到"下一页"按钮
- 居然也有自己的博客了...
- 晕啊,没想到我的博客居然还在呢?
- 百度居然把我的技术博客封了???