溫馨提示×

sql遞歸查詢父節(jié)點怎么實現(xiàn)

sql
小億
261
2024-05-28 13:21:11
欄目: 云計算

在 SQL 中遞歸查詢父節(jié)點通常使用遞歸查詢語句來實現(xiàn),其中使用了遞歸關鍵字 WITH RECURSIVE。下面是一個示例:

假設有一個表 employees ,其中包含員工的 ID 和上級員工的 ID,結構如下:

CREATE TABLE employees (
    id INT,
    name VARCHAR(50),
    manager_id INT
);

INSERT INTO employees (id, name, manager_id) VALUES
(1, 'Alice', NULL),
(2, 'Bob', 1),
(3, 'Charlie', 2),
(4, 'David', 2),
(5, 'Eve', 1);

現(xiàn)在我們要查詢員工 ‘David’ 的所有上級,可以使用遞歸查詢語句如下:

WITH RECURSIVE cte AS (
    SELECT id, name, manager_id
    FROM employees
    WHERE name = 'David'
    UNION ALL
    SELECT e.id, e.name, e.manager_id
    FROM employees e
    JOIN cte ON e.id = cte.manager_id
)

SELECT id, name
FROM cte;

上面的查詢語句中,WITH RECURSIVE 創(chuàng)建了一個遞歸的公共表表達式(CTE),在第一部分中選擇了員工 ‘David’ 的記錄,然后在第二部分中通過遞歸的方式聯(lián)接上級員工,直到找到最頂層的員工。最后在主查詢中選擇了所有上級員工的 ID 和姓名。

這樣就可以實現(xiàn)在 SQL 中遞歸查詢父節(jié)點的功能。

0