Tengo un múltiplo de padre e hijo jerarquía consta de 100k+ registros. Este es un pequeño subconjunto.
Niño | Los padres |
---|---|
1 | 2 |
1 | 3 |
2 | 3 |
Necesito ir a través de cada valor de la columna de los Padres y de comprobar si el valor existe también en la columna del Niño. Si no lo hace, a continuación, crear una fila con (valor NULO). En este ejemplo, el valor 3 no existe en el Niño columna de forma que se necesitan para crear una nueva fila con los valores (3, NULL).
Niño | Los padres |
---|---|
3 | NULL |
1 | 2 |
1 | 3 |
2 | 3 |
Mi código no devuelve un error, pero no hace lo que yo quiero hacer.
INSERT IGNORE INTO #table (child, parent)
SELECT (CASE WHEN parent not in (Select child from #table) THEN parent END) as child, Null
FROM #table
Consigo muchas nuevas filas con (NULL,NULL) pero 0 filas con (valor NULO). Debe de alguna manera siempre vaya a la cláusula else cuando hay tantas nuevas filas con (NULL, NULL), pero no sé por qué.
Utilizando SQL Server Management Studio 17. Cualquier ayuda es muy apreciada.