sql server 递归查询

该博客探讨了如何使用SQL的递归查询来追溯数据间的层级关系。通过WITH子句创建的CTE(公共表表达式),展示了从根节点5339693向下递归获取所有子项,以及从特定ID9451204向上回溯到父级的完整路径。内容涉及数据库查询优化和数据结构理解。
摘要由CSDN通过智能技术生成
WITH mytest(ID,SerialNumber,ParentID)
AS
(
	SELECT ID,SerialNumber,ParentID FROM dbo.mesMaterialUnit
	WHERE ID = 5339693
	UNION ALL
	SELECT a.ID,a.SerialNumber,a.ParentID FROM dbo.mesMaterialUnit a
	INNER JOIN mytest ON a.ParentID = mytest.ID
	WHERE a.PartID = 24
)
SELECT * FROM mytest

向下递归

ID              SerialNumber                               ParentID
5339693    0000703858600001    NULL
5339694    0000703858600001131800001    5339693
5339695    0000703858600001131800002    5339693
5339697    0000703858600001131800003    5339693
5339698    0000703858600001131800004    5339693
5341612    0000703858600001141500003    5339693
5341613    0000703858600001141500004    5339693
5347231    0000703858600001151200001    5339693
5348635    0000703858600001151400001    5339693
5349736    0000703858600001151500001    5339693
5350737    0000703858600001151700001    5339693
5351448    0000703858600001151800001    5339693
5352740    0000703858600001151900001    5339693
5352741    0000703858600001152000001    5339693
9451203    abcd    5339694
9451204    abcd    9451203

WITH test2(ID,SerialNumber,ParentID)
AS(
	SELECT ID,SerialNumber,ParentID FROM dbo.mesMaterialUnit
	WHERE ID = 9451204
	UNION ALL
	SELECT a.ID,a.SerialNumber,a.ParentID FROM dbo.mesMaterialUnit a
	INNER JOIN test2 ON a.ID = test2.ParentID
	WHERE a.PartID = 24
)
SELECT * FROM test2

向上递归

ID               SerialNumber    ParentID
9451204    abcd    9451203
9451203    abcd    5339694
5339694    0000703858600001131800001    5339693
5339693    0000703858600001    NULL

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值