Oracle树形结构的sql语句
2011-10-16 16:52
357 查看
ORACLE提供了一种树形结构用来实现层次查询:
START WITH :指定记录是根节点的条件。根节点可以有多个。
CONNECT BY :指定记录之间是父节点和子节点关系的条件。查找出含有子节点的父节点的条件
PRIOR :指定父节点记录的引用。
SIBLINGS :指定树的排序。同一父节点下的兄弟节点的顺序。
树在数据库表中的存储结构,如下:
实例sql语句如下:
查询出来的结果就是按树排序的记录集。
如果用到了逻辑删除(假删除),那么上述sql语句中三处的del <> 1的意义是不同的。第一处是在表中全部记录中筛选出没有被标记删除的记录(缩短生成树的计算范围),第二处是筛选出根节点没有被标记删除的根节点的记录,第三处是是筛选出含有子节点的父节点没有被标记删除的父节点的记录
START WITH :指定记录是根节点的条件。根节点可以有多个。
CONNECT BY :指定记录之间是父节点和子节点关系的条件。查找出含有子节点的父节点的条件
PRIOR :指定父节点记录的引用。
SIBLINGS :指定树的排序。同一父节点下的兄弟节点的顺序。
树在数据库表中的存储结构,如下:
create table TREE ( ID NUMBER not null, //主键 PID NUMBER not null, //父节点id ORDER_ID NUMBER not null, //排序id NODE_NAME VARCHAR2(100) not null, //节点名称 DEL VARCHAR2(5), //删除标识 1:为删除 constraint PK_TREE primary key (ID) );
实例sql语句如下:
SELECT * FROM tree WHERE del <> 1 START WITH pid = 0 AND del <> 1 CONNECT BY PRIOR id = pid AND del <> 1 ORDER SIBLINGS BY order_id
查询出来的结果就是按树排序的记录集。
如果用到了逻辑删除(假删除),那么上述sql语句中三处的del <> 1的意义是不同的。第一处是在表中全部记录中筛选出没有被标记删除的记录(缩短生成树的计算范围),第二处是筛选出根节点没有被标记删除的根节点的记录,第三处是是筛选出含有子节点的父节点没有被标记删除的父节点的记录
相关文章推荐
- Oracle树形结构的sql语句
- MySql的sql语句中添加存储过程或者存储函数来实现Oracle中的start with ……connect by prior……递归(树形结构数据)查询
- 如何用SQL查询语句获取Oracle表 树形结构的记录(PL/SQL )
- oracle复制表数据和表结构的sql语句
- 在SQLPLUS中oracle查看表结构SQL语句 oracle修改表字段SQL语句 修改表字段SQL语句
- 在Oracle 9i中修改表的结构的相关sql语句
- Oracle 树形SQL语句,SYS_CONNECT_BY_PATH 函数
- Oracle对树形结构按级次排序SQL
- 数据库——Oracle中快速复制表结构及sql语句select into的用法
- 导出ORACLE表结构到SQL语句(含CLOB)
- 使用SQL语句生成站点导航树形结构的实例
- oracle中生成树型结构的sql语句
- Oracle中通过一条sql遍历树形结构
- 在Oracle 9i中修改表的结构的相关sql语句
- 树形结构的sql语句
- 记录学习的点滴(树形结构数据SQL检索语句)
- Oracle SQL树形结构查询
- 如何用SQL语句获取Oracle表结构
- oracle 导出当前用户下表结构信息 sql语句
- Oracle 层级语句 树形结构 显示根节点 不显示根节点