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

mysql查詢最上層父節點

吉茹定2年前10瀏覽0評論

在處理樹狀結構數據時,經常需要查詢每個節點的最上層父節點,MySQL可以通過遞歸查詢實現該功能。

假設有如下的樹狀結構表:

CREATE TABLE tree (
id INT PRIMARY KEY,
parent_id INT,
name VARCHAR(20)
);
INSERT INTO tree VALUES
(1, null, 'A'),
(2, 1, 'B'),
(3, 2, 'C'),
(4, 2, 'D'),
(5, 1, 'E'),
(6, 5, 'F'),
(7, 5, 'G');

首先,需要創建一個遞歸函數,用于不斷地向上查找父節點:

DELIMITER $$
CREATE FUNCTION find_top(id INT) RETURNS INT
BEGIN
DECLARE current_id INT;
SET current_id = id;
WHILE current_id IS NOT NULL DO
SET id = current_id;
SELECT parent_id INTO current_id FROM tree WHERE id = current_id;
END WHILE;
RETURN id;
END $$
DELIMITER ;

該函數接受一個整數參數,表示當前節點的ID,每次循環中將該節點的父節點查詢出來,直到找到最上層的父節點返回。

接下來,可以使用以下語句查詢樹狀結構表中每個節點的最上層父節點:

SELECT id, name, find_top(id) AS top_id FROM tree;

運行結果如下:

+----+------+--------+
| id | name | top_id |
+----+------+--------+
|  1 | A    |      1 |
|  2 | B    |      1 |
|  3 | C    |      1 |
|  4 | D    |      1 |
|  5 | E    |      5 |
|  6 | F    |      5 |
|  7 | G    |      5 |
+----+------+--------+

從結果可以看出,每個節點的最上層父節點都被正確地查出來了。