承接国内外服务器租用托管、定制开发、网站代运营、网站seo优化托管接单、网站代更新,新老站点皆可!!咨询QQ:3787320601

MSSQL中实现递归查询的语法及示例

管理员 2023-05-26 07:55:34 网站建设 31 ℃ 0 评论 2350字 收藏

MSSQL中实现递归查询的语法及示例

Common Table Expression (CTE) 是一种可以在SQL Server中实现递归查询的有效方法,可使用CTE进行复杂的查询,包括帶有条件的多级子查询。

CTE表达式的构成主要有三部份:首先是with子句,可使用select语句将数据存储在CTE表中以供以后使用;其次是choose子句,可以选择CTE表中要包括的信息;最后,递归子句可以定义CTE查询语句可以沿着树状结构进行查询。

下面通过实例来论述MSSQL中实现递归查询的语法:

— 创建测试表

create table Employee

(

employeeId int identity(1, 1),

name varchar(20) not null,

manager_id int null,

salary int not null

)

— 添加测试数据

insert into Employee

values (‘Bob’, NULL, 100000),

(‘Max’, 1, 150000),

(‘Alice’, 1, 120000),

(‘John’, 3, 90000);

— 使用CTE实现递归查询

;with EmployeeCTE as

(

select employeeId,

name,

manager_id,

salary

from Employee

where manager_id is null

union all

select E.employeeId,

E.name,

E.manager_id,

E.salary

from Employee as E

join EmployeeCTE as M

on E.manager_id = M.employeeId

)

— 查询员工领导信息及所有下属的工资之和

select M.employeeId as ManagerId,

M.Name as ManagerName,

S.empSalary

from EmployeeCTE as M

join

(

select manager_Id,

sum(salary) as empSalary

from EmployeeCTE

group by manager_Id

) as S

on M.employeeId = S.manager_Id

— 清空测试表

drop table Employee

上述例子中,通过CTE表达式根据员工的经理ID进行递归查询,获得经理id、经理姓名和所有下属的工资之和。

从上述例子可以看出,通过使用CTE表达式可以实现MSSQL中的递归查询,开发人员可使用CTE表达式对数据库进行复杂的查询。

文章来源:丸子建站

文章标题:MSSQL中实现递归查询的语法及示例

https://www.wanzijz.com/view/43537.html

X

截屏,微信识别二维码

微信号:weimawl

(点击微信号复制,添加好友)

打开微信