用sql的Function實現遞迴樹

2021-08-30 18:12:16 字數 999 閱讀 6187

用sql的方法實現遞迴樹 -----ms sql server中

tb_city表結構如下

id      name      parentid

1      湖北      0

2      湖南      0

3      武漢      1

4      仙桃      1

5      長沙      2

6      蔡甸      3

定義函式

create function c_tree(@initid int)/*定義函式c_tree,輸入引數為初始節點id*/

returns @t table(id int,name varchar(100),parentid int,lev int)/*定義表t用來存放取出的資料*/

begin

declare @i int/*標誌遞迴級別*/

set @i=1

insert @t select id,name,parentid,@i from tb_city where id=@initid

while @@rowcount<>0

begin

set @i=@i+1

insert @t select a.id,a.name,a.parentid,@i from tb_city as a,@t as b

where b.id=a.parentid and b.lev=@i-1

endreturn

end

執行

使用函式

select * from c_tree(1) /*取湖北下面的子節點*/

oracle中的實現

select *  from tb_city

/*此處可寫where語句限制*/

start with id=1

connect by prior id=parentid

怎樣用MySQL建立function

以前使用 sql server 的時候經常用 function 對一些資料的處理比較方便,現在資料庫轉移到 mysql 上以後,同樣也希望能保留相同的功能,慶幸的是 mysql 也支援function 現來分享下在 mysql 中怎樣建立 function 工具 原料 mysql mysql wor...

SQL 自定義函式FUNCTION

自定義函式 1 標量函式 create function getnamebyid2 js id int returns varchar 32 定義返回的資料型別 asbegin declare js name varchar 32 宣告乙個區域性變數 select js name select f ...

用map實現sql拼接

今天在寫二維報表 某列的內容隨著帳號不同會變化 的時候想到了sql拼接。首先你需要在你的實體類中定義乙個map集合,看jeesit的原始碼它是把這個屬性定義在基類中,乙個意思,然後通過這個類的屬性去獲取就行了,下面的 有些麻煩,通過上面這句話你可以寫出你想要的拼接。大概是這樣定義的 baseenti...