一張無限級的分類表,簡列主要表字段主鍵FID,父類ID欄位FPID。
檢索資料集的SQL語句
with a as
(select FID from 表 where FID ='值'
union all
select x.FID from 表 x,a where x.FPID =a.FID )
select * from a
刪除資料集的SQL語句
with a as
(select FID from 表 where FID ='值'
union all
select x.FID from 表 x,a where x.FPID =a.FID )
delete from 表 where FID in(select FID from a )
1.其中x可以理解為類似a別名或者join關聯語句裡面的從表名
2.如果你像這樣改寫檢索語句

 

with a as(
select * from 表 where FID='值'
union all
select a.* from ArticleType x,a
where x.FPID=a.FID)
select * from a

 

可能會出現"語句被終止。完成執行語句前已用完最大遞迴 100"報錯。
解決辦法如下:在union兩檢索出來的資料集時它們欄位的個數/類型要相同/對應。這是我的理解

 

with a as
(
select 欄位1,欄位2,欄位3,欄位4.. from 表 where FID='值'
union all
select x.欄位1,x.欄位2,x.欄位3,x.欄位4..from 表 x,a where x.FPID=a.FID
)
select * from a
創作者介紹
創作者 shadow 的頭像
shadow

資訊園

shadow 發表在 痞客邦 留言(0) 人氣()