锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
tb_city琛ㄧ粨鏋勫涓?br />id聽聽聽聽聽聽name聽聽聽聽聽聽parentid
1聽聽聽聽聽聽婀栧寳聽聽聽聽聽聽0
2聽聽聽聽聽聽婀栧崡聽聽聽聽聽聽0
3聽聽聽聽聽聽姝︽眽聽聽聽聽聽聽1
4聽聽聽聽聽聽浠欐聽聽聽聽聽聽1
5聽聽聽聽聽聽闀挎矙聽聽聽聽聽聽2
6聽聽聽聽聽聽钄$敻聽聽聽聽聽聽3
瀹氫箟鍑芥暟
create function c_tree(@initid int)/*瀹氫箟鍑芥暟c_tree錛岃緭鍏ュ弬鏁頒負(fù)鍒濆鑺傜偣id*/
returns @t table(id int,name varchar(100),parentid int,lev int)/*瀹氫箟琛╰鐢ㄦ潵瀛樻斁鍙栧嚭鐨勬暟鎹?/
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
聽 end
return
end
鎵ц
浣跨敤鍑芥暟
select * from c_tree(1) /*鍙栨箹鍖椾笅闈㈢殑瀛愯妭鐐?/
Oracle涓殑瀹炵幇
select *聽 from TB_CITY
/*姝ゅ鍙啓WHERE璇彞闄愬埗*/
start with聽I(yíng)D=1
connect by prior ID=PARENTID