MySQL查詢節點的頂級節點
在數據庫查詢過程中,有時需要查詢一個節點的頂級節點,也就是該節點所在的樹形結構中的最高級節點,本文將介紹使用MySQL語句查詢節點的頂級節點。
步驟一:創建測試表
為了方便演示,我們先創建一個測試表tree,包含id和parent_id兩個字段,用于存儲樹形結構的節點信息。
CREATE TABLE `tree` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `parent_id` bigint(20) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
步驟二:插入測試數據
接下來,我們將向測試表tree中插入10條測試數據,用于后續查詢操作。
INSERT INTO `tree` (`id`, `parent_id`) VALUES (1, NULL),(2,1),(3,1),(4,2),(5,2), (6,3),(7,3),(8,4),(9,4),(10,5);
步驟三:使用MySQL查詢節點的頂級節點
使用MySQL查詢節點的頂級節點,我們可以利用遞歸查詢的方式,一直向上查詢每個節點的父節點,直到找到頂級節點為止。
WITH RECURSIVE cte(id, parent_id, root_id) AS ( SELECT id, parent_id, id as root_id FROM tree WHERE id = 10 -- 查詢的節點id UNION ALL SELECT tree.id, tree.parent_id, cte.root_id FROM tree JOIN cte ON tree.id = cte.parent_id ) SELECT root_id FROM cte ORDER BY id DESC LIMIT 1;
步驟四:查詢結果
經過上述SQL查詢,我們可以得到節點10的頂級節點為節點1。
root_id
1
總結
通過上述步驟,我們可以使用MySQL查詢節點的頂級節點,對于樹形結構的查詢操作具有一定的參考意義。