SQL递归】的更多相关文章

-- 查询指定部门下面的所有部门, 并汇总各部门的下级部门数 ) SET @Dept_name = N'MIS' ;WITH DEPTS AS( -- 查询指定部门及其下的所有子部门 -- 定位点成员 SELECT * FROM Dept WHERE name = @Dept_name UNION ALL -- 递归成员, 通过引用CTE自身与Dept基表JOIN实现递归 SELECT A.* FROM Dept A, DEPTS B WHERE A.parent_id = B.id ), DE…
递归一般出现在树形结构中 1:根据孩子节点查找所有父节点 With T As ( Select * From U_Companies TB Where CompanyID=80047 Union All Select TB.* From U_Companies TB Inner Join T on TB.CompanyID=T.ParentID ) Select * From T 2:根据父亲查找所有子节点 With T As ( Select * From U_Companies TB Whe…
昨晚看的书,发现可以用T-SQL 实现自定义递归,其实也就是变相的 foreach 直接上代码 ,不懂得可问: ),col int ) -- id 增量id pid该数据的上级增量id name 名称 declare @id int ,@col int insert into @t select id,pid,[name],@col from dbo.CTE where id=@id begin insert into @t select CTE.id,CTE.pid,CTE.[name],@c…
with Test_Recursion(Id,ParentId)AS(select Id,ParentId  from [V_KPI_DetailsActivities] where ParentId  = 4 --没有引用CTE自身必须放在第一个递归行之上union all  --没有引用CTE自身的语句和第一个递归行之间必须用UNION ALLselect a.Id,a.ParentId from [V_KPI_DetailsActivities] as a join Test_Recurs…
在SQL的树型结构中,很多时候,知道某一节点的值,需要查找该节点的所有子节点(包括多级)的功能,这时就需要用到如下的用户自定义函数. 表结构如下: ID int Dep_Type int Dep_Code varchar(50) Dep_Name varchar(50) Dep_Dian int Dep_FathID int Dep_Opera varchar(50) Dep_Status int Dep_AddTime datetime 用户自定义函数如下: create function f…
with CTE as ( -->Begin 一个定位点成员 select ID, PersonName,ParentID,cast(PersonName as nvarchar(max)) as TE, ROW_NUMBER()over(order by getdate()) as OrderID --最关键是上面这个字段,要获取排序字段,按字符串来排序. --其中窗口函数必须要使用order by,但是不能用整型,那就用时间吧 from tmpTPStmp where ParentID=0-…
直接贴代码吧= = WITH CTE AS ( -->Begin 一个定位点成员 SELECT COUNTRYORDERID,HSNAME, COUNTRYNAME,PARENTORDERID, IMPORTCURRENTSUMAMOUNT, IMPORTCONTRASTSUMAMOUNTPERCENTAGE, IMPORTCURRENTSUMAMOUNTPERCENTAGE, CAST(COUNTRYNAME AS NVARCHAR(max)) AS TE,0 AS Levle FROM #T…
xml 代码 <resultMap type="xxx.xxx.xxx.xxx.实体类" id="xxxListTree"> <result column="id" property="id" javaType="java.lang.Long" /> <result column="xxx_name" property="xxxName"…
if object_id('[tb]') is not null drop table [tb] go create table [tb]([modeid] int,modename varchar(20),parentid int) insert [tb] select 100 ,'商品管理', 0 union all select 101 ,'定单管理', 0 union all select 102 ,'用户管理', 0 union all select 104 ,'学院广告', 0 un…
select (SELECT (Case A1.AreaAbbr WHEN '' THEN A1.AreaName Else A1.AreaAbbr  END)+ ' ' FROM AreaLang A1            WHERE (SELECT AreaNo FROM Area WHERE Area.AreaID= A1.AreaID) IN            (SUBSTRING((SELECT AreaNo FROM Area Where Area.AreaID=P.AreaI…
if object_id('[tb]') is not null drop table [tb] go create table [tb]([modeid] int,modename varchar(20),parentid int) insert [tb] select 100 ,'商品管理', 0 union all select 101 ,'定单管理', 0 union all select 102 ,'用户管理', 0 union all select 104 ,'学院广告', 0 un…
最终效果 原始数据: 转换脚本: WITH post_a AS ( SELECT DISTINCT T.EMP_NO,S.CODE_ FROM inscndb.DTFMA000_EMP_POST T ,VIEW_BI_POST S WHERE T.POST||'-'||POST2 = S.POST ), post_b AS (SELECT emp_no,code_,ROW_NUMBER() OVER(PARTITION BY EMP_NO ORDER BY EMP_NO) row_num FRO…
declare v_rlt ):; l_sql ); -- variable that contains a query l_c sys_refcursor; -- cursor variable(weak cursor). l_res1 BYTE); -- variable containing fetching data l_res2 date; -- variable containing fetching data l_res3 date; -- variable containing…
数据库脚本 CREATE TABLE [dbo].[Std_Area]( [Id] [int] NOT NULL, [Name] [nvarchar](50) NULL, [ParentId] [int] NULL, [Type] [int] NULL, [Remark] [nvarchar](255) NULL ) ON [PRIMARY] GO INSERT [dbo].[Std_Area] ([Id], [Name], [ParentId], [Type], [Remark]) VALUE…
;) as varchar(max)) as ssort from Category where ID = '123' union all select t.*, ) as varchar(max)) from catChild, Category t where catChild.ID = t.ParentID) ' order by ssort,Sort ;with cte as ( level, ) as varchar(max)) as ssort from Category where…
select distinct fm_id, ,,'') AS SO_Nums from [dbo].[t_BADItems] its 表内一对多 的关系查询…
项目中遇到一个树型结构表要根据任意传入节点获取它从根节点一直到自身节点的全部路径的中文名称,并且用'>'与分隔. 我使用在sqlServer中写了一个解析函数方便开发调用. USE [RP_ERP] GO /****** Object: UserDefinedFunction [dbo].[Func_GetDeptPathName] Script Date: 01/09/2015 17:33:30 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIE…
1.我先建两个表 一个表示项目及级别 另一个表示项目最后一级中包含内容.两个表的数据如图 CREATE TABLE [dbo].[yq_Project]( ,) primary key, ) NOT NULL, ) NULL, ) NULL, ) NULL, ) NULL, ) NULL, [bHead] [bit] NULL, seq int ) ) create table yq_Qz_House ( id ,) primary key, cHuHao ), cDongHao ), cZuo…
SQL实现递归及存储过程中In()参数传递解决方案   1.SQL递归 在SQL Server中,我们可以利用表表达式来实现递归算法,一般用于阻止机构的加载及相关性处理.   -->实现: 假设OrganiseUnit(组织机构表)中主要的三个字段为OrganiseUnitID(组织机构主键ID).ParentOrganiseUnitID(组织机构父ID).OrganiseName(组织机构名称) ? 1 2 3 4 5 6 7 [sql] with organise as  (select *…
1.SQL递归 在SQL Server中,我们可以利用表表达式来实现递归算法,一般用于阻止机构的加载及相关性处理. -->实现: 假设OrganiseUnit(组织机构表)中主要的三个字段为OrganiseUnitID(组织机构主键ID).ParentOrganiseUnitID(组织机构父ID).OrganiseName(组织机构名称) with organise as (select * from OrganiseUnit where OrganiseUnit.OrganiseUnitID…
存储过程(stored procedure)有时候称为sproc,它是真正的脚本-或者更准确的说,他是批处理(batch)-它存储于数据库中,而不是淡出的文件中.无论如何,这个比较并不是很确定.存储过程有输出参数,输入参数已及返回值等.而脚本不会有这些内容. 存储过程基本语法:CREATE PROCEDURE|PROC <sproc name> [<parameter name> <data type> [VARYING][<default value>]…
本文出处:http://www.cnblogs.com/wy123/p/6709520.html 1,SQL语句或者存储过程的最大长度(SQL字符串容量)是多少? 经常有人问,我的SQL语句是拼凑出来的,可能很长,如果太长了,是不是SQL Server支持不动了? SQL语句的或者存储过程的最大长度是65,536 * Network packet size,那么这个Network packet size是个什么鬼? 参考如下截图,是网络包的大小,默认是4096个字节,也就是4kb, 那么默认情况…
1 导言 作为一个新手JAVA程序员,我相信很多人和我一样急切的想要寻找项目来做,这里我把马士兵老师讲的JAVA WEB的第一个小项目拿过来给大家分享一下. 首先,对一个项目而言我们先要认识清楚我们要做什么.这里我们要做的是一个模拟的小型BBS,内容分为以下几块: 1.树形展示回帖内容 2..详细展示帖子内容 3.回复帖子功能 4.管理员登陆功能 5.删除功能 对这个项目而言,我们使用纯JSP最为联系语言,以后使用JSP+JAVABEAN这种主流的方法.纯JSP将事物与展示放在一起做,业务逻辑混…
原文连接:http://www.jb51.net/article/41472.htm -->情景 ① 通过刚才的SQL递归方式,我们已经可以将一个组织机构和其全部下级单位查询出来:假设每个组织机构还有一个字段为OrganiseCode(组织机构代码): ② 当我们需要按照组织机构代码进行筛选数据时,我们会用到 In 这个查询条件,例如select * from OrganiseUnit where OrganiseCode in ('10000001','10000003','10000002'…
一.Linux 硬件查看命令     ----/proc 文件系统是一种内核和内核模块用来向进程(process) 发送信息的机制.我们可以从这个文件里获取到系统的相关信息. 1.显卡信息dmesg | grep -i vgalspci | grep -i vga //查看显卡信息2.主板信息dmidecode | grep -i ‘serrial number’ //查看主板信息,查看主板的序列号3.CPU信息#通过/proc文件系统cat /proc/cpuinfodmesg | grep…
一.递归查询 1.结构: 递归CTE最少包含两个查询(也被称为成员). 第一个查询为定点成员,定点成员只是一个返回有效表的查询,用于递归的基础或定位点. 第二个查询被称为递归成员,使该查询称为递归成员的是对CTE名称的递归引用是触发.在逻辑上可以将CTE名称的内部应用理解为前一个查询的结果集. 2.递归结束条件: 第二个递归查询返回空结果集或是超出了递归次数的最大限制时才停止递归. 3.Sql递归的优点: 效率高,大量数据集下,速度比程序的查询快. 4.递归查询的作用: 用来查询指定成员及其递归…
SQL Server关闭掉 触发器递归SQL Server  是有一个开关, 可以关闭掉 触发器递归的.EXEC sp_dboption '数据库名字', 'recursive triggers', false --sqlserver建表时设置字段初始默认值完整的示例--创建表时设置字段的默认值 create table 表(id int,name varchar(10) default '张三',age int)--添加字段时设置字段的默认值 alter table 表 add sex cha…
    SQL Server中的公共表表达式(Common Table Expression,CTE)提供了一种便利的方式使得我们进行递归查询.所谓递归查询方便对某个表进行不断的递归从而更加容易的获得带有层级结构的数据.典型的例子如MSDN(https://technet.microsoft.com/en-us/library/ms186243(v=sql.105).aspx)中提到的获取员工关系层级的结构,如图1所示. 图1.获取员工层级结构       图1所示的例子是一个简单的通过递归获取…
1秒查原本递归的查询. 适用于:上下级.多层查询 -- Get childs by parent id WITH Tree AS ( SELECT Id,ParentId FROM dbo.Node P WHERE P.Id = -- parent id UNION ALL SELECT C.Id,C.ParentId FROM dbo.Node C INNER JOIN Tree T ON C.ParentId = T.Id ) SELECT * FROM Tree -- Get parent…
在sqlserver2005之前,要实现递归功能比较麻烦,比如可能会要用到临时表与while语句来循环.自sqlserver2005之后,新增了with as功能语法,即 公用表达式(CTE),让递归实现起来变的简单了. 本章我们主要演示如何利用with as功能实现一个简单的递归功能.在这之前先看一下cte的语法: [ WITH <common_table_expression > [ ,...n ] ]<common_table_expression >::=        e…