【【Sql Server】SQL SERVER 递归查询】教程文章相关的互联网学习教程文章

sqlserver实现递归查询的方法示例

本文实例讲述了sql server实现递归查询的方法示例。分享给大家供大家参考,具体如下: 有时候面对树结构的数据时需要进行递归查询,网上找了一番,参考了各位大神的文章,发现蛮简单的,当做个小笔记方便以后使用 sql server 通过CTE来支持递归查询,这对查询树形或层次结构的数据很有用 一般的树形表结构如下,相信大家都很熟悉的idtitlepid11级节点022级节点133级节点244级节点355级节点4 下面上代码----------sql server 递归查询----...

SQLServer公用表表达式(CTE)实现递归的方法【图】

公用表表达式简介: 公用表表达式 (CTE) 可以认为是在单个 SELECT、INSERT、UPDATE、DELETE 或 CREATE VIEW 语句的执行范围内定义的临时结果集。CTE 与派生表类似,具体表现在不存储为对象,并且只在查询期间有效。与派生表的不同之处在于,公用表表达式 (CTE) 具有一个重要的优点,那就是能够引用其自身,从而创建递归 CTE。递归 CTE 是一个重复执行初始 CTE 以返回数据子集直到获取完整结果集的公用表表达式。 下面先创建一个表,...

sqlserver递归子节点、父节点sql查询表结构的实例

一、查询当前部门下的所有子部门WITH deptAS ( SELECT *FROM dbo.deptTab --部门表WHERE pid = @idUNION ALLSELECT d.*FROM dbo.deptTab dINNER JOIN dept ON d.pid = dept.id)SELECT *FROM dept二、查询当前部门所有上级部门WITH tabAS ( SELECT DepId ,ParentId ,DepName ,[Enable] ,0 AS [Level]FROM deptTab WITH ( NOLOCK ) --表名WHERE [Enable] = 1AND depId = @depIdUNION ALLSELECT b.DepId ,b.ParentId ,...

SQLServer树形表非循环递归查询的实例详解【图】

很多人可能想要查询整个树形表关联的内容都会通过循环递归来查...事实上在微软在SQL2005或以上版本就能用别的语法进行查询,下面是示例。--通过子节点查询父节点 WITH TREE AS( SELECT * FROM Areas WHERE id = 6 -- 要查询的子 id UNION ALL SELECT Areas.* FROM Areas, TREE WHERE TREE.PId = Areas.Id ) SELECT Area FROM TREE --通过父节点查询子节点 WITH TREE AS( SELECT * FROM Areas WHERE id = 7 -- 要查询的子...

使用SqlServerCTE递归查询处理树、图和层次结构

CTE(Common Table Expressions)是从SQL Server 2005以后版本才有的。指定的临时命名结果集,这些结果集称为CTE。 与派生表类似,不存储为对象,并且只在查询期间有效。与派生表的不同之处在于,CTE 可自引用,还可在同一查询中引用多次。使用CTE能改善代码可读性,且不损害其性能。 递归CTE是SQL SERVER 2005中重要的增强之一。一般我们在处理树,图和层次结构的问题时需要用到递归查询。CTE的语法如下WITH CTE AS(SELECT EmpId,...

sqlserver中存储过程的递归调用示例

递归式指代码片段调用自身的情况;危险之处在于:如果调用了自身一次,那么如何防止他反复地调用自身。也就是说提供递归检验来保证适当的时候可以跳出。 以阶层为例子说存储过程中递归的调用。 递归CREATE PROC [dbo].[usp_spFactorial] @InputValue INT, @OuputValue INT OUTPUT AS BEGINDECLARE @InValue INT;DECLARE @OutValue INT;IF(@InputValue!=1)BEGINSET @InValue = @InputValue - 1;EXEC spFactorial @InValue,@OutVal...

MSSQL中递归SQL查询语句实例说明-【图】

一张表(ColumnTable)的结构如下图所示当前需要实现的功能:通过Number的值为67来获取当前的节点ID、父节点ID 递归实现SQL语句: 代码如下: with znieyu as ( select c.Id,c.FatherId,0 as lv1 from ColumnTable c where c.Number=67 union all select c.Id,c.FatherId,lv1-1 from znieyu z inner join ColumnTable c on z.FatherId=c.Id ) select znieyu.Id ,znieyu.FatherId,znieyu.lv1 as lv from znieyu 实现的效果:满足条...

sqlserver另类非递归的无限级分类(存储过程版)【图】

下面是我统计的几种方案: 第一种方案(递归式): 简单的表结构为: CategoryID int(4), CategoryName nvarchar(50), ParentID int(4), Depth int(4) 这样根据ParentID一级级的运用递归找他的上级目录。 还有可以为了方便添加CategoryLeft,CategoryRight保存他的上级目录或下级目录 第二种方案: 设置一个varchar类型的CategoryPath字段来保存目录的完整路径,将父目录id用符号分隔开来。比如:1,5,8,10 第三种方案: 每级分类递增两...

SqlServer 使用递归公用表表达式处理数据孤岛问题【代码】【图】

完整Sql语句(可直接运行) -- SqlServer 使用递归公用表表达式处理数据孤岛问题--创建测试表 -- 判断临时表 #t 是否存在 if object_id(Ntempdb..#t,NU) is not null begindrop table #t end go create table #t(orderDate date,itemNo nvarchar(20),num int); insert into #t(orderDate,itemNo,num) values(2020-01-01,t1,1) ,(2020-01-03,t3,3) ,(2020-01-07,t7,7)-- 查询产品最早下单日期和最晚下单日期之间连续的销量情况 de...

sqlserver递归查询【代码】

--由父项递归下级 with cte(id,parentid,text) as (--父项 select id,parentid,text from treeview where parentid = 450 union all --递归结果集中的下级 select t.id,t.parentid,t.text from treeview as t inner join cte as c on t.parentid = c.id ) select id,parentid,text from cte --------------------- --由子级递归父项 with cte(id,parentid,text) as (--下级父项 select id,parentid,text from tr...

sqlserver with 递归用法【代码】

DECLARE @companyid TABLE ( [Id] [int] ); with cte as( select Id from [base].[Company] where Id=123union 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变量只能紧跟的使用一次;

sql server 递归查询【代码】

Create Table #ss( F1 int , F2 int , F3 char( 20 ) ) Declare @ss int , @ss1 int set @ss = 1 insert #ss( F2 , F3 ) Values( @ss , 教育局 ) insert #ss( F1 , F2 , F3 ) Values( @ss , 2 , 市一高 )set @ss1 = 3 insert #ss( F1 , F2 , F3 ) Values( @ss , @ss1 , 开发区 ) insert #ss( F1 , F2 , F3 ) Values( @ss1 , 4 , 开发区1 ) set @ss1 = 5 insert #ss( F1 , F2 , F3 ) Values( @ss , @ss1 , 区 ) insert #ss( F1 , F2...

【Sql Server】SQL SERVER 递归查询【代码】【图】

原文:【Sql Server】SQL SERVER 递归查询  SQL SERVER 2005之前的版本只能用函数方法实现,SQL SERVER 2005之后新增了CTE功能,可以利用CTE实现递归查询;CTE:公用表达式Common Table Expression 是SQL SERVER 2005版本之后引入的一个特性; #填充测试数据 1、sql 1 Create table GroupInfo([Id] int,[GroupName] nvarchar(50),[ParentGroupId] int)2 3 Insert GroupInfo4 5 select 0,某某大学,null union all6 7 select 1,外语...

记一次SqlServer骚操作——递归

目录记一次SqlServer骚操作——递归 创建一个测试表,并灌入一些数据 兼容MSSQL2008以下的版本 正向查找 反向查找MSSQL2008以后的版本 正向查找 反向查找记一次SqlServer骚操作——递归 ? 最进需要用到sql递归更新数据的问题,因为需要兼容Sql Server 2000的语法,所以在Sql Server2008前后有两种不同的写法,这里简单记录一下。 创建一个测试表,并灌入一些数据 CREATE TABLE Test (Id INT,PId int )INSERT INTO Test VALUES(1,nu...