在 PostgreSQL 中可以使用 WITH RECURSIVE 和 UNION ALL 來實現遞歸查詢,不需要使用 for 循環。這是 PostgreSQL 提供的一種更有效的遞歸查詢方式。
以下是一個利用 WITH RECURSIVE 實現遞歸查詢的示例:
WITH RECURSIVE recursive_query AS (
-- 初始查詢
SELECT id, parent_id, name
FROM your_table
WHERE parent_id IS NULL
UNION ALL
-- 遞歸查詢
SELECT t.id, t.parent_id, t.name
FROM your_table t
INNER JOIN recursive_query r ON r.id = t.parent_id
)
SELECT id, parent_id, name
FROM recursive_query;
在上面的示例中,我們首先定義了一個遞歸查詢的公共表達式(CTE)recursive_query,其中包含兩部分:初始查詢和遞歸查詢。初始查詢用于找到根節點(parent_id 為 NULL 的節點),而遞歸查詢是通過不斷連接父子節點來逐級向下查詢。
最后,我們在 SELECT 語句中使用 recursive_query 來輸出遞歸查詢的結果。通過這種方式,我們可以實現遞歸查詢而不需要使用 for 循環。