sql server 通过上下级关系字段用递归方法生成上下级层级关联数据字段

本文介绍了如何在SQL Server中利用递归方法处理含有上下级关系的数据,通过`WITH AS`子查询模块,实现查找所有上级和下级员工。文章详细讲解了场景、解决方案以及性能优化的进阶策略,包括添加关联字段以提升查询效率,并提供了存储过程解析步骤。
摘要由CSDN通过智能技术生成
一、场景

有一个数据库表里面存储了一个上下级关系的字段,通过存储这个觉得的上级id。如果要查找所有的上级或者下级就要通过循环每个去查找。如下

id p_id name
1 0 老板
2 1 副总
3 1 副总
4 2 项目总监
5 4 A项目经理
6 4 B项目经理
7 5 A1员工
8 5 A2员工
9 6 B1员工
10 6 B2员工

举例:如果要找所有10号员工的所有上级,就得一步一步循环上去?

二、解决方法

思路采用一个递归方法,先将层级结构用一个字段存储起来
表结构和数据

CREATE TABLE [dbo].[test] (
[id] int NOT NULL ,
[name] varchar(255) NULL ,
[pid] int NULL 
)
GO

-- ----------------------------
-- Records of test
-- ----------------------------
INSERT INTO [dbo].[test] ([id], [name], [pid]) VALUES (N'1', N'老板', N'0')
GO
GO
INSERT INTO [dbo].[test] ([id], [name], [pid]) VALUES (N'2', N'副总', N'1')
GO
GO
INSERT INTO [dbo].[test] ([id], [name], [pid]) VALUES (N'3', N'副总', N'1')
GO
GO
INSERT INTO [dbo].[test] ([id], [name], [pid]) VALUES (N'4', N'项目总监', N'2')
GO
GO
INSERT INTO [dbo].[test] ([id], [name], [pid]) VALUES (N'5', N'A项目经理', N'4')
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值