程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL查詢Summary<無限級分類,遞歸檢索或刪除父類下的所有子類>

MySQL查詢Summary<無限級分類,遞歸檢索或刪除父類下的所有子類>

編輯:MySQL綜合教程

  一張無限級的分類表,簡列主要表字段主鍵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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved