一張無限級的分類表,簡列主要表字段主鍵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語句
www.2cto.com
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
www.2cto.com
PS:之前看過一些前輩們的blog,我記得其中有一篇日志裡面有這樣的一句話:"分享別人是一點,但別人能給予你兩點..."。我知道每個人的經驗經歷和技術能力都不一樣,像我這樣的菜鳥雖然畢業工作一年時間不到,還有很多的不足和需要學習的地方,但是歲月不饒人,平時工作實踐中遇到的問題有機會和時間就寫出來整理一下思緒,積累一點,是一點。
作者 wisonlee