您的位置:首页 > 博客中心 > 数据库 >

SQL CTE 递归 查询省,市,区

时间:2022-03-10 17:41

 IF OBJECT_ID(‘tb‘) 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 tb values(‘002‘ , ‘001‘ , ‘广州市‘)
insert into tb values(‘003‘ , ‘001‘ , ‘深圳市‘)
insert into tb values(‘004‘ , ‘002‘ , ‘天河区‘)
insert into tb values(‘005‘ , ‘003‘ , ‘罗湖区‘)
insert into tb values(‘006‘ , ‘003‘ , ‘福田区‘)
insert into tb values(‘007‘ , ‘003‘ , ‘宝安区‘)
insert into tb values(‘008‘ , ‘007‘ , ‘西乡镇‘)
insert into tb values(‘009‘ , ‘007‘ , ‘龙华镇‘)
insert into tb values(‘010‘ , ‘007‘ , ‘松岗镇‘)
GO
SELECT * FROM tb AS t

DECLARE @ID VARCHAR(3) 
--查询ID = ‘001‘的所有子节点
SET @ID = ‘007‘
;WITH Temp AS (
  SELECT id,pid,NAME FROM tb AS t WHERE t.id=@ID
  UNION ALL
  SELECT t2.id,t2.pid,t2.NAME FROM tb t2 INNER JOIN Temp tm on t2.pid=tm.ID
)
SELECT * FROM Temp AS t WHERE id!=@ID

 

SQL CTE 递归 查询省,市,区,布布扣,bubuko.com

热门排行

今日推荐

热门手游