Я пытаюсь обновить таблицу, которая напоминает дерево. Я хочу обновить столбец, чтобы определить, является ли каждый узел листовым узлом.
Таблица выглядит так:
#NodeTable:
NodeID | ParentID | IsLeaf
--------------------------
0 | NULL | 0
1 | 0 | 0
3 | 1 | 0
5 | 3 | 0
6 | 3 | 0
7 | 1 | 0
Я пытаюсь обновить таблицу с помощью следующей команды:
UPDATE #NodeTable
SET IsLeaf =
CASE
WHEN NodeID IN (SELECT ParentID FROM #NodeTable) THEN 0 ELSE 1
END
Логика заключается в том, что если NodeID появляется в (SELECT ParentID ..), то это не конечный узел, поэтому IsLeaf должен быть равен 0, иначе, если его нет, это лист, а IsLeaf должен быть равен 1.
Это утверждение, однако, не соответствует тому, что я думал. Любая помощь будет оценена.
Конечный результат должен выглядеть следующим образом:
NodeTable:
NodeID | ParentID | IsLeaf
--------------------------
0 | NULL | 0
1 | 0 | 0
3 | 1 | 0
5 | 3 | 1
6 | 3 | 1
7 | 1 | 1