これがテーブルです
user_id | parent_id | lft
--------|-----------|-----
1 | | 0
2 | 1 | 0
3 | 1 | 0
4 | 2 | 0
ノード 1 から CTE を実行し、リーフに到達するまで user_id 1 のすべての子をトラバースし、トラベスされた chidren lft フィールドの値を 1 に更新するクエリを次に示します。
WITH RECURSIVE d AS (
SELECT user_id
FROM btrees
WHERE user_id = 1
UNION ALL
SELECT c.user_id
FROM d JOIN btrees c ON c.parent_id = d.user_id
)
UPDATE btrees b set lft = 1
FROM d
WHERE d.user_id = b.user_id
反対方向に進むクエリを求めているだけです..つまり。lft の値を更新できるように、任意のノードからルート ノードに