SQL语句查询出一个父节点下的所有子节点
idusernameparentid1user102user213user324user43用一条SQL查出user1下面的所有子用户(2,3,4都是他的子用户)怎么查如...
id username parentid
1 user1 0
2 user2 1
3 user3 2
4 user4 3
用一条SQL查出user1下面的所有子用户(2,3,4都是他的子用户)怎么查
如果没有比较好的办法,查出他下面的用户2和3也可以
parentID是父节点,也就是关联主键id的 展开
1 user1 0
2 user2 1
3 user3 2
4 user4 3
用一条SQL查出user1下面的所有子用户(2,3,4都是他的子用户)怎么查
如果没有比较好的办法,查出他下面的用户2和3也可以
parentID是父节点,也就是关联主键id的 展开
展开全部
假如你的表名字是tt,创建下面的存储过程,使用存储过程即可查询。
create proc querytree
@user varchar(100)
as
begin
declare @id int
declare @T_tmp table(id int,username varchar(100),parentid int)
insert into @T_tmp select * from tt where username=@user
while(@@rowcount>0)
begin
insert into @T_tmp select * from tt where parentid in (select id from @T_tmp) and id not in(select id from @T_tmp)
end
select * from @T_tmp where username<>@user
end
create proc querytree
@user varchar(100)
as
begin
declare @id int
declare @T_tmp table(id int,username varchar(100),parentid int)
insert into @T_tmp select * from tt where username=@user
while(@@rowcount>0)
begin
insert into @T_tmp select * from tt where parentid in (select id from @T_tmp) and id not in(select id from @T_tmp)
end
select * from @T_tmp where username<>@user
end
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
同一个表不能差出来的
不过下面这句可以实现差出所有有父id的条目 如果要在加上 user1那就不行了
select * from user where parentid in (select id from user)
不过下面这句可以实现差出所有有父id的条目 如果要在加上 user1那就不行了
select * from user where parentid in (select id from user)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select b.* from tablename a,tablename b where a.id<=b.parentid
and a.username='user1'
and a.username='user1'
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼主,我完全没看明白你的意思。字段之间的关系你都没有说清楚。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询