如何创建自我迭代查询以从ID连接所有Name的列,找到与传入的id匹配的refID,并重复上述序列。
id Name refID
34 Name1 37
37 Name2 0
253 Name3 34
254 Name4 0
272 Name5 0
273 Name6 0
因此,如果我传入37
的初始ID,则吐出应为Name2
,(34
的{{1}}为refID
因此,37
,(Name1
因此253
refID
{}} 34
。 Name3
没有任何253
停止。 refID's
。
我们也只希望查询开始查看id的refID最初是否为0。
答案 0 :(得分:2)
我认为您正在寻找递归查询。你得到的东西可以与树形结构相媲美。 如果我理解你的话,你也希望你的结果只有一行。
你在使用什么数据库?据我所知,MySql不支持递归查询。在SQL Server中,您可以使用以下内容实现此目的:
with ref(id, refId, name ) as(
select id, refId, cast((name + ' ') as varchar(max))
from test
where id = 37
union all
select t.id, t.refId, cast((r.name + t.name + ' ') as varchar(max))
from test t
join ref r
on r.id = t.refId
)
select top 1 name from ref
order by len(name) desc
我希望这会有所帮助。 ;)