SQL SERVER 進行遞迴查詢

2022-08-31 09:12:09 字數 1510 閱讀 5392

有如下資料表

假如我們要查詢id為003的資料的所有子節點我們可以使用cte 遞迴查詢完成...

if

object_id('

tb','

n') is

notnull

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' , '

松崗鎮'

);select

*from

tb;

with cte as(

select a.id,a.name,a.pid from tb a where id=

'003

'union

allselect k.id,k.name,k.pid from tb k inner

join cte c on c.id =

k.pid

)select

*from

cte

查詢結果如下:

003 深圳市 001

005 羅湖區 003

006 福田區 003

007 寶安區 003

008 西鄉鎮 007

009 龍華鎮 007

010 松崗鎮 007

SQLServer 遞迴查詢

感謝文章遞迴查詢,正好趁此機會梳理一下資料庫的遞迴查詢 公用表表示式 cte 可以認為是在單個 select insert update delete 或 create view 語句的執行範圍內定義的臨時結果集。公用表表示式可以包括對自身的引用,這種表示式稱為遞迴公用表表示式。with expre...

sqlserver 遞迴查詢

有如下資料表 假如我們要查詢id為003的資料的所有子節點我們可以使用cte 遞迴查詢完成.sql view plain copy print?if object id tb n is notnull drop table tb create table tb id varchar 3 pid va...

sql server遞迴查詢

1 既然要談到sql,資料庫表是必須的 2 資料結構 3 獲取某個節點的所有子節點 傳統的寫法 sql2000 很麻煩,暫且就不寫了 來看看cte的寫法 create proc sp gettreebyid treeid int asbegin with ctetree as select from...