SQLSERVER的递归】的更多相关文章

数据字典如下…
--获取当前及以下部门 Create proc GetCurrentAndUnderOrg @orgId int as begin WITH cte AS ( SELECT * ,0 AS level FROM Static_Organ WHERE OrganID=@orgId UNION ALL SELECT g.*,level+1 FROM Static_Organ g INNER JOIN cte ON g.ParentOrgan=cte.OrganID ) SELECT * FROM c…
实际项目如遇到按照如地区这样树状结构的条件递归查询数据的场景中,可以使用. CREATE FUNCTION [dbo].[GetAllChildrenTypeById] ( ) ) RETURNS TABLE AS RETURN with cte as ( SELECT [id] ,[dictionaryTypeCode] ,[text] ,[parentId] ,[sort] ,[availabl] ,[leaf] ,[url] ,[value] FROM [Dictionary] where…
--查找当前用户所在部门的所有下级包括当前部门 with cte as ( as lvl from Department union all from cte c inner join Department d on c.Id = d.Pid --id 部门编号,PID 上级部门编号 ) select * from cte 查找当前用户所在部门的所有上级包括当前部门 with cte as ( as lvl from Department union all from cte c inner j…
DECLARE @companyid TABLE ( [Id] [int] ); with cte as( union all select a.Id from [base].[Company] a,cte b where a.ParentId=b.Id ) INSERT @companyid(id) select Id from cte 1.with 前边的sql语句需加分号: 2.使用with变量需紧跟with语句: 3.with变量只能紧跟的使用一次:…
日常开发中我们经常会遇到树形结构数据处理,一般表结构通常会常用id,pid这种设计方案. 之前用oracle.sqlServer数据库,用相应的语法即可获取树形结构数据(oracel:connect by prior :sqlServer:with...as ...). 最近一个项目数据库用的是mysql,需求中含有获取树形结构数据的接口,由于之前没怎么用过mysql,于是第一时间就是查看mysql语法,看看有没有类似于oracle或sqlserver的递归语法,结果是没有,后来决定自定义数据库…
SQL2005 Common Table Expressions(CET)即通用表表达式. SQLSERVER CET递归使用案例: 1.普通案例 表结构如下:   ;WITH cet_depart AS (     SELECT depart_id, depart_name FROM dbo.Depart     WHERE depart_id = '004'    --入口     UNION ALL    --递归时必要     SELECT d.depart_id, d.depart_n…
SqlServer 省市县三级联动 三张表递归合并成一张表sql如下: insert into table2(area_name,area_parent_id) select province,'0' from provinces insert into table2(area_name,area_parent_id) select city,c.id from cities a inner  join provinces b on a.provinceid=b.provinceid inner…
数据库设计中经常碰到父子节点的关系结构,经常需要找到某个节点的根,或者某个节点的所有子节点,一般做法都是在业务层做递归的方式实现,或者数据库存储过程实现.但其实SQLServer提供的CTE可以很好的简化我们的工作,非常方便的实现这一功能. 例子: 1.正向递归,找某个节点下的所有子节点 with t as--如果CTE前面有语句,需要用分号隔断(selectId,ParentId,Name from WMS_Org whereId'union all select r1.Id,r1.Paren…
1.加载驱动: Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); DriverManager.getConnection("jdbc:sqlserver://192.168.0.63:1433;DatabaseName=test","sa","hnzsfwq"); 2.分页: --top not in方式 select top 条数 * from ta…