Pridávanie nových riadkov (Hodnota NULL) na viacerých rodič dieťa hierarchie

0

Otázka

Mám viacero rodič dieťa hierarchie pozostávajúce z 100k+ záznamov. Je to malá podmnožina.

Dieťa Rodič
1 2
1 3
2 3

Musím ísť cez každú hodnotu zo stĺpca Materskej a skontrolujte, či sa v rovnakej hodnote existuje aj v stĺpci Dieťa. Ak nie, potom vytvoriť riadok s (hodnota NULL). V tomto príklade hodnotu 3 sa nenachádza v Detskej stĺpec, aby som potrebujete, ak chcete vytvoriť nový riadok s hodnotami (3, NULL).

Dieťa Rodič
3 NULL
1 2
1 3
2 3

Môj kód nevracia chybu, ale to nie je to, čo chcem to urobiť.

INSERT IGNORE INTO #table (child, parent)
SELECT (CASE WHEN parent not in (Select child from #table) THEN parent END) as child, Null
FROM #table

Mám veľa nových riadkov s (NULL,NULL), ale 0 riadky s (hodnota NULL). To sa musí nejako vždy preskočte na iné ustanovenie, keď existuje toľko nových riadkov s (NULL, NULL), ale nie sú istí, prečo.

Pomocou SQL Server Management Studio 17. Akákoľvek pomoc je veľmi cenený.

parent-child sql sql-server
2021-11-23 14:41:35
1

Najlepšiu odpoveď

1

By ste nemali používať case tu, ale ja ľavej pripojiť namiesto:

INSERT IGNORE INTO #table (child, parent)
SELECT DISTINCT t1.parent, NULL
FROM #table t1
LEFT JOIN #table t2
    ON t1.parent = t2.child
WHERE t2.child IS NULL

Pozrite si live demo na Db - <>Husle

2021-11-23 14:53:26

V iných jazykoch

Táto stránka je v iných jazykoch

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................