题:
一、有如下表
id parentid name
1 0 电脑
2 1 笔记本
3 1 台式机
4 1 服务器
5 2 联想
6 5 T40
根据上表数据,查询出:
1 电脑
2 电脑 - 笔记本
3 电脑 - 台式机
4 电脑 - 服务器
5 电脑 - 笔记本 - 联想
6 电脑 - 笔记本 - 联想 - T40
一看到查询结果就知道这个应该是一个考递归跟sql知识的题目,用T-SQL实现一个递归算法,折腾半天得出结果:
create function returnname(@childid int)
returns varchar(100)
as
begin
declare @returnname varchar(100)
declare @pid int
set @returnname=''
select @pid=parentid,@returnname=[name] from TABLENAME where id=@childid
if @pid<>0
set @returnname=dbo.returnname(@pid)+'-'+@returnname
else
select @returnname=name from TABLENAME where id=@childid
return @returnname
end
最后执行:
select dbo.returnname(id) from TABLENAME
得出结果。