sqlserver查询树形结构的所有子节点

如题一张表idnamepid--------------------------------1电器NULL2家电13冰箱24洗衣机25电脑16笔记本57平板58组装机79... 如题一张表
id name pid
----------- ---------- -----------
1 电器 NULL
2 家电 1
3 冰箱 2
4 洗衣机 2
5 电脑 1
6 笔记本 5
7 平板 5
8 组装机 7
9 品牌机 7
--查询电脑的所有子节点
刚刚学数据库,遇到问题不是很懂,这个还只是查询两层,那涉及更多层次怎么办!谢谢
不要粘贴复制啊!我想说的针对我这长表,还有以后扩展到无限分级后,怎么查询所有子节点
展开
 我来答
micro0369
推荐于2018-03-28 · TA获得超过1.2万个赞
知道大有可为答主
回答量:9250
采纳率:85%
帮助的人:3997万
展开全部
用标准sql的with实现递归查询(sql2005以上肯定支持,sql2000不清楚是否支持):

with subqry(id,name,pid) as (
select id,name,pid from test1 where id = 5
union all
select test1.id,test1.name,test1.pid from test1,subqry
where test1.pid = subqry.id
)
select * from subqry;
liziqian1984
2012-07-11 · 超过30用户采纳过TA的回答
知道答主
回答量:153
采纳率:0%
帮助的人:29.1万
展开全部
select * from tablename where pid=@pid
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友5677fae0b
2012-07-11
知道答主
回答量:28
采纳率:0%
帮助的人:9.3万
展开全部
1 SET ANSI_NULLS ON
2 GO
3 SET QUOTED_IDENTIFIER ON
4 GO
5
6 CREATE FUNCTION [dbo].[fn_GetSubCasNoTree](@CAS_NO VARCHAR(20))
7 RETURNS @CAS TABLE
8 (
9 CAS_NO VARCHAR(20) COLLATE DATABASE_DEFAULT,这个不加SQL2000会报错。
10 LEVEL INT
11 )
12
13 AS
14 BEGIN
15 DECLARE @LEVEL int
16 SET @LEVEL = 1
17 INSERT INTO @CAS SELECT @CAS_NO , @LEVEL
18 WHILE @@ROWCOUNT > 0
19 BEGIN
20 SET @LEVEL = @LEVEL + 1
21 INSERT INTO @CAS SELECT A.CAS_NO , @LEVEL
22 FROM CASN A , @CAS B
23 WHERE A.UP = B.CAS_NO and B.LEVEL = @LEVEL - 1
24 END
25 RETURN
26 END
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式