永发信息网

SQL问题 实现递归查询

答案:2  悬赏:40  手机版
解决时间 2021-07-19 19:53

哪位高手能详解一下 各种数据库 如SQL server、MySQL、Oracle、DB2 实现递归查询的专门语句。

再详解下利用存储过程查询的方法。

最佳答案

下面是我做过的题目.你是哪个表,在换一下名称



create proc p_recursion @v_uid varchar(5)
as
begin
--创建一个临时表用于存储结果
create table #TBuidres(ID varchar(5), UID varchar(5))
--插入初始条件
insert #TBuidres(ID, UID)
select ID, UID from TBuid where ID = @v_uid

declare @v_temp varchar(5)
set @v_temp = isnull(@v_temp,'')

--为临时表打开一个游标
declare vp_i cursor for select ID from #TBuidres
open vp_i
fetch next from vp_i into @v_temp

--根据临时表中ID去寻找TBuid中对应UID的记录插入临时表
while @@FETCH_STATUS = 0
begin
insert #TBuidres(ID,UID)
select ID,UID from TBuid where UID = @v_temp

fetch next from vp_i into @v_temp
end

--返回结果
select ID,UID from #TBuidres

--处理游标后事
close vp_i
deallocate vp_i
end

--存储过程到此结束---------------------------------------------------------------------------------
--运行
exec p_recursion '001'

全部回答

--sql 2005 递归

--> 测试数据:[tb] if object_id('[tb]') is not null drop table [tb] create table [tb]([id] int,[col1] varchar(8),[col2] int) insert [tb] select 1,'河北省',0 union all select 2,'邢台市',1 union all select 3,'石家庄市',1 union all select 4,'张家口市',1 union all select 5,'南宫',2 union all select 6,'坝上',4 union all select 7,'任县',2 union all select 8,'清河',2 union all select 9,'河南省',0 union all select 10,'新乡市',9 union all select 11,'aaa',10 union all select 12,'bbb',10

;with t as( select * from [tb] where col1='河北省' union all select a.* from [tb] a ,t where a.col2=t.id

) select * from t

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
怎样学好英语句式结构
求感人的动画片
在眉山买一套三室一厅的二手房多少钱啊
我是大专生,在那个网站可以报考公务员?
丝路英雄 你好
买二手面包车的注意事项
Cela me fait un peu étonnant lorsque j’a
php发送邮件错误
请问ONES刻演唱会的步骤?
为什么我的QQ头像上传后那么小呢?
我是高三学生现在喜欢上一个女孩,怎么办?
网上有什么个性的输入法?
推荐几首宝儿(Boa)唱的快节奏的歌
javascript网页关闭时触发什么事件?
有什么练声的好方法?
推荐资讯
包头哪里有卖肉鸽子的?
QQ飞车最新宠物哪个好?
怎样才能使一个女人改掉她的坏脾气呢??
面包代表什么意思,面包是什么意思?
经常性的厌食。
手机上录的视频怎样存到QQ上?
胡笳十八拍怎么读,雪茄的笳的读音
为啥心情总是很紧张
什么花最大??
小狗脖子上拴铃铛,会对小狗的听力造成影响么
怎么能用普通的符号组成心的符号是个(在加个
手机安装什么相机最好,手机用的那一种照相机
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?