sql 實現遞迴演算法

2021-08-30 18:55:18 字數 1558 閱讀 7175

根據傳入引數查詢指定項的子項的遞迴用法

樣表:child,parent

1      0

2      0

3      1

4      2

要 實現這種用法一般都通過兩種方式來實現:

procedure 方式:

create procedure usp_getallchild(@child int)

asdeclare @t table(child int null,parent int null,level int null)

declare @level int

set @level=0

insert into @t(t.child,t.parent,level) select [table].child,[table].parent,@level from [table] where [table].child=@child

while @@rowcount>0

begin

set @level=@level+1

insert into @t(t.child,t.parent,level) select [table].child,[table].parent,@level from [table] join @t as t on t.child=[table].parent where t.level=@level-1

endselect * from @t

function 方式

create function udf_getallchild(@child int)

returns @t_return table(child int null,parent int null,level int null)

asbegin

declare @level int

set @level=0

insert into @t_return(child,parent,level) select child,parent,@level from table where child=@child

while @@rowcount>0

begin

set @level=@level+1

insert into @t(child,parent,level) select child,parent,@level from table jion @t_return as t on t.child=table.parent where t.level=@level-1

endreturn @t_return

end

sql server table型別的變數使用注意事項

在sql sever 中,table型別的變數的使用可以給我們帶來很多方便之處,但是方便的東西往往是存在一些不足的 ,

table 型別的變數在作為 表使用時,在進行關聯操作時,必須給表變數起乙個別名,不然sql server 會豪不客氣的告訴你,你沒有申明該錶變數。其它使用可以很實體表一樣使用。

用SQL語句實現遞迴演算法

本文通過乙個bom表的例子,分別介紹在sql server2000和sql server2005中如何編寫遞迴演算法。一 建立測試資料 createtablebillofmaterial productno nvarchar 15 父元件編號 productname nvarchar 50 子元件名...

遞迴演算法實現

遞迴演算法 1 乙個人趕著鴨子去每個村莊賣,每經過乙個村子賣去所趕鴨子的一半又乙隻。這樣他經過了七個村子後還剩兩隻鴨子,問他出發時共趕多少只鴨子?經過每個村子賣出多少只鴨子?題目分析 遞迴終止的條件是到第7個村莊時遞迴停止 演算法構造 定義遞迴函式f n 當 n 8時 剩餘2只鴨子,當 0時 總共趕...

python遞迴實現 遞迴演算法 python實現

在函式的定義中對這個函式自身的呼叫,就是遞迴。遞迴結構中,遞迴的部分必須比原來的整體簡單,才有可能到達某種終結點 出口 而且必須存在非遞迴的基本結構構成的部分,否則會無限遞迴。學習目標 程式設計實現斐波那契數列求值 f n f n 1 f n 2 程式設計實現求階乘 n 程式設計實現一組資料集合的全...