2016-09-21 7 views
6

trzeba trochę pomóc proszę, mój SQL jest prawie nie istnieje ...SQL nie scalania dopasowane cel vs nie dopasowane przez źródła

Jaka jest różnica między NOT MATCHED BY SOURCE vs NOT MATCHED BY TARGET

Na przykład:

Czy WHEN NOT MATCHED BY SOURCE oznacza, że ​​rekordy istnieją w miejscu docelowym, a nie w źródle? - więc możemy je usunąć? usunąć?

i WHEN NOT MATCHED BY TARGET - oznacza, że ​​rekordy istnieją w źródle, ale nie w celu? więc możemy wstawić je?

+1

To jest to, co mają na myśli, ale to, co chcesz zrobić, gdy aren” t dopasowane całkowicie zależy od tego, co chcesz osiągnąć. na przykład czy rekord istniejący w twoim celu, ale nie w twoim źródle (nie pasuje do źródła) oznacza, że ​​nie chcesz go w tabeli docelowej? – ZLK

+0

w zasadzie, jeśli DOPASOWANE I [CEL] .IS_DELETED = 1 THEN oznacz je jako nie usunięte lub KIEDY NIE DOPASOWANE PRZEZ CELU (ale są one w źródle), następnie wstaw je lub KIEDY NIE DOPASOWALI SIĘ ŹRÓDŁEM I [CELEM]. [IS_DELETED] = 0 oznacz je jako usunięte - ma sens? –

+1

Oto dobry przykład i wyjaśnienie: https://technet.microsoft.com/en-us/library/bb522522(v=sql.105).aspx – Anton

Odpowiedz

10

KIEDY NIE DOPASOWANE DO CELU - Powinieneś użyć tej klauzuli, aby wstawić nowe wiersze do tabeli docelowej. Wiersze wstawiane do tabeli są tymi wierszami w tabeli źródłowej, dla których nie ma pasujących wierszy w obiekcie docelowym.

KIEDY NIE dopasowane Source - Jeśli chcesz usunąć wiersz z tabeli docelowej, która nie pasuje do wiersza w tabeli źródłowej