SQL 生成無級樹

2021-03-31 12:27:57 字數 1092 閱讀 7791

--示例資料

create table tb(id int,name varchar(10),parentid int)

insert tb select 1,'aaaa'    ,0

union all select 2,'bbbb'    ,0

union all select 3,'cccc'    ,0

union all select 4,'aaaa-1'  ,1

union all select 5,'aaaa-2'  ,1

union all select 6,'bbbb-1'  ,2

union all select 7,'cccc-1'  ,3

union all select 8,'cccc-2'  ,3

union all select 9,'aaaa-1-1',4

go--建立處理的函式

create function f_id()

returns @re table(id int,level int,sid varchar(8000))

asbegin

declare @l int

set @l=0

insert @re select id,@l,right(10000+id,4)

from tb where parentid=0

while @@rowcount>0

begin

set @l=@l+1

insert @re select a.id,@l,b.sid+','+right(10000+a.id,4)

from tb a,@re b

where a.parentid=b.id and b.level=@l-1

endreturn

endgo

--呼叫函式實現查詢

select a.*,帶縮排的name=space(b.level*4)+a.name

from tb a,f_id() b

where a.id=b.id

order by b.sid

go--刪除測試

drop table tb

drop function f_id

sql語句生成sql指令碼

sql語句有一種特別的用法,相信很多人還不知道,我也是後來學到的,因此拿來跟大家分享下 生成sql指令碼 舉個例子 select 1 from student 如果表中有資料的話,你就會發現查詢的結果會是 根據這個原理,我們可以用來生成sql指令碼,以下就是例項 例項1 一個簡單的例子 select...

生成sql指令碼

生成資料庫指令碼 sql2000企業管理器 右鍵要匯出的資料庫 所有任務 生成sql指令碼 常規 裡選擇 生成全部物件指令碼 在指令碼檔案中包含說明性標題 選上 設定格式 裡,將 包含擴充套件屬性 選上 選項 中,將 表指令碼選項 中的內容全部選擇上 選項 中,安全性選項 是決定是否要包含建立資料庫...

關於生成樹 次小生成樹

1.對於最小生成樹的任何一條邊e,將它去掉後形成兩個集合u和v,則e是u,v兩集合間所有邊中最小的 假設不是,則可以把e去掉換成一條更小的邊,從而形成一棵更小的生成樹,矛盾 2.在最小生成樹中的第k長邊是所有生成樹中第k長邊的最短邊。設該邊為e,將它去掉後形成兩個集合u和v,若是生成樹,那麼在u和v...

關於生成樹 次小生成樹

1.對於最小生成樹的任何一條邊e,將它去掉後形成兩個集合u和v,則e是u,v兩集合間所有邊中最小的 假設不是,則可以把e去掉換成一條更小的邊,從而形成一棵更小的生成樹,矛盾 2.在最小生成樹中的第k長邊是所有生成樹中第k長邊的最短邊。設該邊為e,將它去掉後形成兩個集合u和v,若是生成樹,那麼在u和v...

生成樹和生成森林

1 無向圖的生成樹和生成森林 對於無向連通圖,在圖的深度優先遍歷或廣度優先搜尋遍歷過程中經歷的邊的集合和 圖中的所有頂點一起構成圖的極小連通子圖,就是一顆生成樹 深度優先生成樹 廣度優先生成樹 對非連通無向圖,深度優先搜尋遍歷或廣度優先搜尋遍歷,每個連通分量中的頂點集合遍歷時走過的邊一起構成若干顆生...