[转]树结构表递归查询在ORACLE和MSSQL中的实现方法
经常需要进行递归查询某个节点下的所有节点数据
以下是分别在ORACLE和MSSQL中的实现
如本例子中涉及的表
TB_SM_ORGAN(
ORG_ID int,
ORG_CODE varchar(20),
ORG_NAME varchar(40),
IS_INITDATA char(1),
ORG_PARENTID int,
ORG_TYPEID varchar(6),
ORG_AGENTID int,
ORG_STATUS char(3),
ORG_DESC varchar(200))
【ORACLE】
直接支持,使用SELECT * WHERE ..... START WITH ..... CONNECT BY 本节点ID=父节点ID
例如:
SELECT * FROM TB_SM_ORGAN where Org_Status = 'S0A' START WITH ORG_ID= @OrgId CONNECT BY PRIOR ORG_ID = ORG_PARENTID order by ORG_CODE
【MSSQL】
没有增强型SQL实现,需要使用临时表和循环多次查询的方式实现
create function GetOrganSubTreeByOrganID (@id int)
returns @t table(
ORG_ID int,
ORG_CODE varchar(20),
ORG_NAME varchar(40),
IS_INITDATA char(1),
ORG_PARENTID int,
ORG_TYPEID varchar(6),
ORG_AGENTID int,
ORG_STATUS char(3),
ORG_DESC varchar(200))
as
begin
insert @t select * from TB_SM_ORGAN where org_id = @id
while @@rowcount > 0
insert @t select a.* from TB_SM_ORGAN as a inner join @t as b
on a.org_parentid = b.org_id and a.org_id not in(select org_id from @t)
return
end
使用方法
SELECT * FROM GetOrganSubTreeByOrganID (ID);
出处: http://www.cnblogs.com/sunnyflat/articles/1173239.html
转载于:https://www.cnblogs.com/feinian/archive/2009/04/30/1446804.html
[转]树结构表递归查询在ORACLE和MSSQL中的实现方法相关推荐
- oracle 树形结构表,树结构表递归查询在ORACLE和MSSQL中的实现方法
树结构表:记录树形数据的二维数据表,包含"本节点ID"和"父节点ID" 经常需要进行递归查询某个节点下的所有节点数据 以下是分别在ORACLE和MSSQL中的实 ...
- oracle返回表id,在Oracle的函数中,返回表类型的语句
Oracle的function中怎么返回表变量? 太晚了,过多的理论知识就不说了,下面简单地说实现吧!.. 1.创建表对象类型. 在Oracle中想要返回表对象,必须自定义一个表类型,如下所示: 复制 ...
- oracle 删除表存过,oracle删除数据库中已存在表的实例代码
摘要 腾兴网为您分享:oracle删除数据库中已存在表的实例代码,长沙银行,银万财富,图钉,听中国等软件知识,以及土豆app,局域网文件,宝宝学动物,观海听涛bbs,育碧,生男生女预测大师,新先视,信 ...
- MySql、Oracle、MSSQL中的字符串的拼接
字符串的拼接 1,Mysql 在Java.C#等编程语言中字符串的拼接可以通过加号"+"来实现,比如:"1"+"3"."a&quo ...
- oracle查询所有表的中文名,Oracle 查询库中所有表名、字段名、字段名说明,查询表的数据条数、表名、中文表名、...
查询所有表名: select t.table_name from user_tables t; 查询所有字段名: select t.column_name from user_col_comments ...
- jq post 表单提交文件_Power Query 中使用POST方法进行网络抓取的尝试
之前我写过很多篇的Power Query的网络抓取的教程,如果按照网络数据传递的方式来说,那些文章中的抓取方式都是GET方法的抓取,那么POST与GET方法有什么区别呢? 这是W3C官网上的内容,大家 ...
- sql如何遍历几百万的表_SQl SERVER 2000 遍历表中数据的方法
方法一:使用游标 declare @ProductName nvarchar(50) declare pcurr cursor for select ProductName from Products ...
- Oracle递归查询,Oracle START WITH……CONNECT BY查询
Oracle递归查询,Oracle START WITH--CONNECT BY查询,Oracle树查询 ================================ ©Copyright 蕃薯耀 ...
- mysql如何植入到oracle_分享MSSQL、MySql、Oracle的大数据批量导入方法及编程手法细节...
1:MSSQL SQL语法篇: BULK INSERT [ database_name . [ schema_name ] . | schema_name . ] [ table_name | vie ...
最新文章
- 常用几种激活函数的总结
- 算法(第4版)Algorithms, Fourth Edition
- Eclipse不自动编译 设置后重新编译仍然没有编译
- vue 2.6 插槽v-slot用法记录
- JDK源码(14)-Error、Exception
- 【报告分享】数据资产化之路----数据资产的估值与行业实践.pdf
- Java常量设计与常量池
- c#chart背景透明_C#+Layui开发后台管理系统
- 如何做好招生讲座-----转载 (四)
- Java- String类概述
- [转载] 七龙珠第一部——第012话 向神龙许愿
- 盲源分离与振动信号处理之间发展关系
- SYSLINUX中文介绍
- win10升级助手链接
- 微信小程序中实现地图导航
- 一文告诉你哪些map element类型支持就地更新
- 大数据必学Java基础(六十一):同步类容器对比应用
- 用Discuz 搭建个人论坛
- matlab运行LCT跟踪算法代码
- 在南方读研和在北方读研有多大差异?
热门文章
- 鹅厂又赢了!游戏不再是玩家的资产,我们只有“使用权”不能交易
- 我的Go+语言初体验——go【Format】goplus
- Postman(使用指南)
- Tensorflow-相关API-交叉熵
- Vue利用Vue.extend()实现自定义弹出框
- 判断一个点是否在三角形内
- 根据实践经验,讲述些学习Java web能少走的弯路,内容摘自java web轻量级开发面试教程...
- codis 部署和测试
- [Objective-c 基础 - 2.4] 多态
- int string java 呼转