У меня есть иерархия с несколькими родительскими дочерними элементами, состоящая из более чем 100 тысяч записей. Это небольшое подмножество.
Ребенок | Родитель |
---|---|
1 | 2 |
1 | 3 |
2 | 3 |
Мне нужно просмотреть каждое значение из родительского столбца и проверить, существует ли такое же значение и в дочернем столбце. Если это не так, то создайте строку с (значением, NULL). В этом примере значение 3 не существует в дочернем столбце, поэтому оно мне нужно для создания новой строки со значениями (3, NULL).
Ребенок | Родитель |
---|---|
3 | нулевой |
1 | 2 |
1 | 3 |
2 | 3 |
Мой код не возвращает ошибку, но он не делает то, что я хочу.
INSERT IGNORE INTO #table (child, parent)
SELECT (CASE WHEN parent not in (Select child from #table) THEN parent END) as child, Null
FROM #table
Я получаю много новых строк с (NULL,NULL), но 0 строк с (значением, NULL). Он должен каким-то образом всегда переходить к предложению else, когда появляется так много новых строк с (NULL, NULL), но не уверен, почему.
Использование среды SQL Server Management Studio 17. Мы будем очень признательны за любую помощь.