斐波納契數列,又稱黃金分割數列,指的是這樣一個數列:1、1、2、3、5、8、13、21、……在數學上,斐波納契數列以如下被以遞歸的方法定義:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*)
上面是對遞歸有個小小的了解。下面給出一個具體的例子
這個例子的作用是根據ID值找出該ID對應值下的地區有哪些?
源代碼:
---db2遞歸查詢 CREATE TABLE AreaInfo ( ID INTEGER NOT NULL PRIMARY KEY, ParentID INT, NAME VARCHAR(100) ) -- DROP TABLE AreaInfo INSERT INTO AreaInfo VALUES(001,null,'雲南省'); INSERT INTO AreaInfo VALUES(002,001,'曲靖市'); INSERT INTO AreaInfo VALUES(003,001,'昭通市'); INSERT INTO AreaInfo VALUES(004,001,'昆明市'); INSERT INTO AreaInfo VALUES(005,002,'陸良縣'); INSERT INTO AreaInfo VALUES(006,002,'師宗縣'); INSERT INTO AreaInfo VALUES(007,006,'彩雲鎮'); INSERT INTO AreaInfo VALUES(008,006,'雄壁鎮'); INSERT INTO AreaInfo VALUES(009,005,'召誇鎮'); INSERT INTO AreaInfo VALUES(010,005,'馬街鎮'); INSERT INTO AreaInfo VALUES(011,010,'大西村'); INSERT INTO AreaInfo VALUES(012,009,'新庄村'); INSERT INTO AreaInfo VALUES(013,004,'官渡區'); INSERT INTO AreaInfo VALUES(014,013,'官渡鎮');
SELECT * FROM AreaInfo
查詢結果如下:

查詢出ID為2所對應值下的地區:
WITH RPL (ID,ParentID,NAME) AS ( SELECT ID,ParentID,NAME FROM AreaInfo WHERE ID=2 UNION ALL SELECT child.id,child.ParentID,child.name FROM RPL parent,AreaInfo child WHERE parent.id=child.ParentID ) SELECT * FROM RPL

查詢出ID為9所對應值下的地區:
WITH PPL (ID,ParentID,NAME) AS ( SELECT ID,ParentID,NAME FROM AreaInfo WHERE ID=9 UNION ALL SELECT child.ID,child.ParentID,child.NAME FROM PPL parent,AreaInfo child WHERE child.ParentID=parent.ID ) SELECT * FROM PPL

