有如下資料表
假如我們要查詢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...