J'ai plusieurs hiérarchie parent-enfant composé de+ de 100k enregistrements. C'est un petit sous-ensemble.
Enfant | Parent |
---|---|
1 | 2 |
1 | 3 |
2 | 3 |
J'ai besoin d'aller à travers chaque valeur de la colonne Parent et de vérifier si la même valeur existe aussi dans la colonne de l'Enfant. Si elle n'en a pas, de créer une ligne avec (valeur NULL). Dans cet exemple, la valeur 3 n'existe pas dans l'Enfant de la colonne, de sorte que j'en ai besoin pour créer une nouvelle ligne avec les valeurs (3, NULL).
Enfant | Parent |
---|---|
3 | NULL |
1 | 2 |
1 | 3 |
2 | 3 |
Mon code ne retourne pas une erreur, mais il ne veut pas faire ce que je veux faire.
INSERT IGNORE INTO #table (child, parent)
SELECT (CASE WHEN parent not in (Select child from #table) THEN parent END) as child, Null
FROM #table
Je reçois beaucoup de nouvelles lignes avec (NULL,NULL), mais 0 les lignes avec (valeur NULL). Il doit en quelque sorte toujours passer à la clause else quand il y a beaucoup de nouvelles lignes avec (NULL, NULL), mais ne sais pas pourquoi.
À l'aide de SQL Server Management Studio 17. Toute aide est grandement appréciée.