SQL Server递归查询怎样编写

655Z技术栈 SQLServer 2小时前 1

在SQL Server中进行递归查询可以使用公共表表达式(CTE)来实现。以下是一个示例:

假设有一个Employee表,其结构如下:

CREATE TABLE Employee ( EmployeeID INT PRIMARY KEY, EmployeeName VARCHAR(50), ManagerID INT );

现在我们要查询某个员工的所有下属,可以使用以下SQL语句来实现递归查询:

WITH DirectReports AS ( SELECT EmployeeID, EmployeeName, ManagerID FROM Employee WHERE ManagerID = @EmployeeID UNION ALL SELECT e.EmployeeID, e.EmployeeName, e.ManagerID FROM Employee e JOIN DirectReports d ON e.ManagerID = d.EmployeeID ) SELECT * FROM DirectReports;

在这个示例中,我们首先定义了一个CTE(DirectReports),它包含了所有直接下属员工的信息。然后利用UNION ALL和JOIN语句来递归查询所有下属员工的信息,并最终用SELECT语句输出结果。

需要注意的是,上述示例中的@EmployeeID是一个参数,表示要查询下属员工的员工ID。在实际使用中,可以根据具体情况进行替换。

提供PHP及ThinkPHP框架的定制开发、代码优化,PHP修改、ThinkPHP修改。

邮箱:yvsm@163.com 微信:yvsm316 QQ:316430983
关闭

用微信“扫一扫”