在MySQL中查找子節(jié)點的根節(jié)點可以使用遞歸查詢的方法,以下是一種簡單的實現(xiàn)。
WITH RECURSIVE cte(id, parent_id, root_id) AS ( SELECT id, parent_id, id AS root_id FROM your_table WHERE parent_id IS NULL UNION ALL SELECT t.id, t.parent_id, cte.root_id FROM your_table t JOIN cte ON t.parent_id = cte.id ) SELECT DISTINCT root_id FROM cte WHERE id = child_id;
上述代碼中,我們首先通過id為null的節(jié)點來確定根節(jié)點,并設(shè)定根節(jié)點的root_id為其本身的id。然后在遞歸查詢中,將每個節(jié)點的root_id設(shè)定為其父節(jié)點的root_id,直到達(dá)到最后一個子節(jié)點。
在查詢時,我們根據(jù)給定的child_id找到其所在的節(jié)點,并返回該節(jié)點的root_id,即為該子節(jié)點所在的根節(jié)點。