欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

mysql上下級關系遞歸查詢

林雅南1年前9瀏覽0評論

MySQL是一種關系型數據庫管理系統,廣泛應用于各種場景。在一些業務場景中,我們需要查詢某個節點下的所有子節點,這就需要使用上下級關系遞歸查詢。下面我們來介紹如何在MySQL中完成上下級關系遞歸查詢。

# 創建測試表
CREATE TABLE test (
id INT PRIMARY KEY,
parent_id INT,
name VARCHAR(255)
);
# 插入測試數據
INSERT INTO test (id, parent_id, name) VALUES
(1, NULL, 'A'), 
(2, 1, 'B'), 
(3, 2, 'C'), 
(4, 3, 'D'), 
(5, NULL, 'E'),
(6, 5, 'F'),
(7, 6, 'G');

上面的代碼是創建了一個測試表,并插入了一些測試數據,其中id是節點的唯一標識,parent_id是父節點的id,name是節點的名稱。

WITH RECURSIVE cte (id, parent_id, name) AS (
SELECT id, parent_id, name
FROM test
WHERE id = 1 -- 查詢根節點
UNION ALL
SELECT child.id, child.parent_id, child.name
FROM test AS child
JOIN cte AS parent ON child.parent_id = parent.id
)
SELECT *
FROM cte;

上面的代碼是使用MySQL的遞歸查詢語法完成了上下級關系的查詢。使用WITH RECURSIVE關鍵字創建一個臨時表cte(common table expression),并指定初始查詢條件。然后使用UNION ALL將下一級節點的數據與當前節點的數據合并,并繼續遞歸查詢,直到查詢到沒有子節點為止。

最終的查詢結果為:

id  parent_id  name
1       NULL   A
2       1      B
3       2      C
4       3      D