With as 递归查询

use TEST
create table Provinces
(
    pro_Id int primary key identity(1,1),
    pro_Name nvarchar(255),
    pro_Code nvarchar(8),
    pro_PId int
)
exec sp_rename ‘Provinces‘, ‘Area‘
select * from Area
execute sp_rename ‘Area.pro_Id‘,‘a_Id‘,‘Column‘

insert into Area values(‘河南省‘,‘0023‘,0)
insert into Area(a_Name,a_Code,a_PId) values(‘郑州市‘,‘0024‘,1)
insert into Area values(‘金水区‘,‘0025‘,2)
insert into Area values(‘北京市‘,‘0021‘,0)
insert into Area(a_Name,a_Code,a_PId) values(‘朝阳区‘,‘0022‘,4) 

--若
declare @count int;--; 必须的

--公共表表达式
--1:
/*
with
CTE1(id) AS
(
--查询出当前省(父)
SELECT a_Id FROM Area where a_Code=‘0023‘
  union all
--显示当前级别以下的所有有关的数据(子)
select Area.a_Id from CTE1        --查找出属于当前省的数据
    inner join Area on CTE1.id=Area.a_PId --递归
  ),
CTE2 as
(    --总计
    select count(*) as cou  from CTE1
)
*/
--2:

with CTE1
as
(
    select a_Id from Area where a_Code=‘0021‘
union all
    select Area.a_Id from CTE1
inner join Area on CTE1.a_Id=Area.a_PId
)

--
select * from Area where a_Id in( select * from CTE1)
union
select null,null,‘总计‘, cou from CTE2;
--则
print  @count ;
时间: 2024-10-11 10:33:55

With as 递归查询的相关文章

SQL Server 2005中的CTE递归查询得到一棵树

感觉这个CTE递归查询蛮好用的,先举个例子: [c-sharp] view plain copy print ? use City; go create table Tree ( ID int identity(1,1) primary key not null, Name varchar(20) not null, Parent varchar(20) null ) go insert Tree values('大学',null) insert Tree values('学院','大学') i

Sql Server递归查询(转)

有如下数据表 假如我们要查询ID为003的数据的所有子节点我们可以使用CTE 递归查询完成... [sql] view plaincopyprint? if OBJECT_ID('tb','N') is not null drop table tb; create table tb(id varchar(3) , pid varchar(3) , name varchar(10)); insert into tb values('001' , null , '广东省'); insert into

SQL Server 2005递归查询

? 1 2 3 4 5 6 7 WHIT XXX(列1,列2....) AS (     SELECT 列1,列2... FROM 表WHERE ID=xxxxxx     UNION ALL     SELECT 列1,列2.... FROM 表 WHERE ID = XXX.ParentID ) SELECT     列1,列2.... FROM XXX SQL Server 2005递归查询,布布扣,bubuko.com

SQL 树递归查询

--树递归查询,根遍历子(由外到里递归)WITH MenuTree --AS( SELECT * FROM dbo.HR_SYS_Menu WHERE UpCode = 5 UNION ALL SELECT dbo.HR_SYS_Menu.* FROM MenuTree JOIN dbo.HR_SYS_Menu ON MenuTree.ID = dbo.HR_SYS_Menu.UpCode)SELECT * FROM MenuTreeGO--树递归查询,根遍历子(由外到里递归)WITH Menu

LINQ TO SQL 实现无限递归查询

LINQ TO SQL 实现无限递归查询 现总结一下,希望能给以后再碰到此类问题的朋友一些帮助 --构造测试数据: 只作演示用 CREATE TABLE [dbo].[Tim_LinqTable]( [Id] int PRIMARY KEY IDENTITY(1,1) NOT NULL, [Name] [varchar](50) NOT NULL, [Parent] int NOT NULL, ) GO INSERT INTO [Tim_LinqTable] SELECT 'A',0 UNION

【转】sql递归查询问题

原文链接地址http://www.cnblogs.com/sweting/archive/2009/06/08/1498483.html 在工作中遇到一个问题,是需要sql递归查询的.不懂,于是到csdn上去问,那里的效率真是非常高,我以前也没在上面问过问题. 问题描述: 我有一个表结构如下:id upperid1     23     24     15     3 具体层次不知道,我想用递归sql语句把所有属于某个upperid的数据,包括它的子树,都读出去,请问应该子怎么写?      比

SQL CTE树递归查询

--树递归查询,根遍历子(由外到里递归)WITH MenuTree AS( SELECT * FROM dbo.HR_SYS_Menu WHERE UpCode = 5 UNION ALL SELECT dbo.HR_SYS_Menu.* FROM MenuTree JOIN dbo.HR_SYS_Menu ON MenuTree.ID = dbo.HR_SYS_Menu.UpCode)SELECT * FROM MenuTreeGO --树递归查询,子遍历根(由里到外递归)WITH MenuT

start with connect by prior 递归查询用法

start with connect by prior 递归查询用法 这个子句主要是用于B树结构类型的数据递归查询,给出B树结构类型中的任意一个结点,遍历其最终父结点或者子结点. 先看原始数据: 1 create table a_test 2 ( parentid varchar2(10), 3 subid varchar2(10)); 4 5 insert into a_test values ( '1', '2' ); 6 insert into a_test values ( '1', '

表内父子关系的递归查询

原理:使用公用表表达式的递归查询 传送门:https://msdn.microsoft.com/zh-cn/library/ms186243 问题:指定一个父级,查询出该父级下面的所有节点. 举例说明:存在表 ComponentI为子,PP_ComponentID为父. CREATE PROCEDURE [dbo].[PP1_BOMComponentSelectAll2_SEL] --'01' @ComponentID VARCHAR(20) AS ? BEGIN ? WITH locs(Com

Oracle 递归查询

1 select a.accountcodeid, a.accountcode, a.accountcodename, 2 SYS_CONNECT_BY_PATH(a.accountcodename, '\') as fullname, a.parentcodeid, level 3 from fm_accountcode a 4 where a.accountcodeid >= 10000 5 start with a.parentcodeid is null 6 connect by pri