mysql 通用树表_通用树形表查询SQL

--=============================================----Description:    获取当前表所选分类ID下的所有下级分类ID--=============================================ALTERPROC[dbo].[GetTreeTable](@IDint=null,--要查询的ID,查询所有输入NULL@TableNamevarchar(100),--要查询的表名@IDNamevarchar(200),--主字段名@SuperIDNamevarchar(200)--上级字段名)ASBEGIN--create table #Tab (ID int, SuperID int, Lev int)--Declare @Lev intDECLARE@StrSQLvarchar(5000)--Set @Lev=0--

--While @Lev=0 or @@ROWCount>0--Begin--Set @Lev=@Lev+1--SET @StrSQL = 'Insert #Tab(ID, SuperID, Lev) Select '+@IDName+', '+@SuperIDName+', '+convert(varchar(10),@Lev)+' From '+@TableName+' Where ('+convert(varchar(10),@Lev)+'=1 and (('+@IDName+'='+convert(varchar(10),@ID)+') or (('+convert(varchar(10),@ID)+' is null or '+convert(varchar(10),@ID)+'='''') and '+@SuperIDName+' is null))) or ('+@SuperIDName+' in (Select ID From #Tab Where Lev='+convert(varchar(10),@Lev)+'-1)) order by '+@IDName----print @StrSQL--EXEC (@StrSQL)--EndSET@StrSQL='WITH DirectReports('+@IDName+','+@SuperIDName+',Level) AS

(

SELECT'+@IDName+','+@SuperIDName+', 0 AS Level

FROM'+@TableName+'WHERE ('+@IDName+'='+CONVERT(VARCHAR(100),ISNULL(@ID,''))+') OR ('+@SuperIDName+'IS NULL AND'+CONVERT(VARCHAR(100),ISNULL(@ID,''))+'= 0)

UNION ALL

SELECT e.'+@IDName+', e.'+@SuperIDName+', Level + 1

FROM'+@TableName+'e

INNER JOIN DirectReports d

ON e.'+@SuperIDName+'= d.'+@IDName+')

SELECT'+@IDName+','+@SuperIDName+',Level

FROM DirectReports

ORDER BY Level'EXEC(@StrSQL)PRINT@StrSQL--select * from #Tab--drop table #TabEND--exec [GetTreeTable]    1060,'T_Department','DepID','SuperDepID'--exec [GetTreeTable]    NULL,'T_WLFLDY','WLFLID','SJFL'--SELECT * FROM T_WLFLDY

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值