温馨提示×

SQL Server递归查询怎样编写

小樊
126
2024-07-13 14:57:22
栏目: 云计算
亿速云云数据库,读写分离,安全稳定,弹性扩容,低至0.3元/天!! 点击查看>>

在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。在实际使用中,可以根据具体情况进行替换。

亿速云「云数据库 MySQL」免部署即开即用,比自行安装部署数据库高出1倍以上的性能,双节点冗余防止单节点故障,数据自动定期备份随时恢复。点击查看>>

推荐阅读:怎样在SQL Server中实现递归

0