sql对一个字段递归查询
时间: 2024-01-27 12:05:07 浏览: 183
SQL Server 公用表表达式(CTE)实现递归的方法
在 SQL 中,可以使用通用表表达式(CTE)来进行递归查询。假设我们有一个名为"Employee"的表,其中包括员工的ID、姓名和直接上级的ID。现在我们想要查询一个员工的所有上级,可以使用以下 SQL 语句:
```
WITH RecursiveEmployee (ID, Name, ManagerID) AS
(
-- 初始化递归查询,选择要查询的员工
SELECT ID, Name, ManagerID
FROM Employee
WHERE ID = @EmployeeID
UNION ALL
-- 递归查询,选择上级
SELECT e.ID, e.Name, e.ManagerID
FROM Employee e
INNER JOIN RecursiveEmployee re ON e.ID = re.ManagerID
)
SELECT * FROM RecursiveEmployee
```
在这个查询中,我们使用了 CTE 来定义一个名为 RecursiveEmployee 的临时表,其中包括 ID、Name 和 ManagerID 三个字段。在 CTE 的第一部分中,我们选择要查询的员工,这是递归查询的起点。在 CTE 的第二部分中,我们使用 INNER JOIN 连接员工表和 RecursiveEmployee 表,并选择上级的信息。最后,在 SELECT 语句中,我们选择 RecursiveEmployee 表中的所有行,即包括所有上级的信息。
阅读全文