SQL Server MERGE (Magyar)
Összegzés: ebben az oktatóanyagban megtanulhatja az SQL Server használatát MERGE
utasítás egy tábla adatainak frissítéséhez egy másik táblából egyeztetett értékek alapján.
Bevezetés SQL Server MERGE utasítás
Tegyük fel, hogy két táblája van, forrás- és céltáblának hívva, és meg kell frissítse a céltáblát a forrástáblából egyeztetett értékek alapján. Három eset van:
- A forrás táblának vannak olyan sorai, amelyek nem léteznek a céltáblában. Ebben az esetben be kell illesztenie azokat a sorokat, amelyek a forrás táblában vannak, a céltáblába.
- A céltáblázatnak vannak olyan sorai, amelyek nem szerepelnek a forrás táblában. Ebben az esetben törölnie kell a sorokat a céltáblából.
- A forrás táblázatban vannak olyan sorok, amelyek ugyanazokkal a kulcsokkal rendelkeznek, mint a céltábla sorai. Ezeknek a soroknak azonban különböző értékei vannak a nem kulcs oszlopokban. Ebben az esetben frissítenie kell a céltábla sorait a forrás táblából származó értékekkel.
A következő kép a forrás és a cél táblákat mutatja be a megfelelő műveletekkel: insert, frissítés és törlés:
Ha használja a INSERT
, UPDATE
és a DELETE
utasítást egyenként, három külön kell elkészítenie utasítások az adatok frissítéséhez a céltáblához a forrás táblázat megfelelő soraival.
Az SQL Server azonban megadja a MERGE
utasítást, amely lehetővé teszi három végrehajtását. cselekvések egyidejűleg. Az alábbiakban bemutatjuk a MERGE
utasítás szintaxisát:
Code language: SQL (Structured Query Language) (sql)
Először adja meg a céltáblát és a forrást táblázat a MERGE
záradékban.
Másodszor, az merge_condition
meghatározza, hogy a forrás táblázat sorai hogyan illeszkednek a céltábla sorai. Hasonló az összekapcsolási feltételben szereplő egyesítési feltételhez. Általában az elsődleges kulcsot vagy az egyedi kulcsot használja a kulcsoszlopokhoz.
Harmadszor, az merge_condition
három állapotot eredményez: MATCHED
, NOT MATCHED
és NOT MATCHED BY SOURCE
.
-
MATCHED
: ezek azok a sorok, amelyek megfelelnek az egyesítési feltételnek. Az ábrán kék színnel vannak feltüntetve. Az egyező sorokhoz frissítenie kell a céltábla soroszlopait a forrástábla értékeivel. -
NOT MATCHED
: ezek a sorok a forrásból táblázat, amely nem tartalmaz egyező sorokat a céltáblában. Az ábrán narancssárgán jelennek meg. Ebben az esetben hozzá kell adnia a forrástábla sorait a céltáblához. Ne feledje, hogy aNOT MATCHED
más névenNOT MATCHED BY TARGET
. -
NOT MATCHED BY SOURCE
: ezek a céltáblázat azon sorai, amelyek nem felelnek meg a forrás táblázat egyetlen sorának sem. Az ábrán zöld színnel jelennek meg. Ha szinkronizálni szeretné a céltáblát a forrástábla adataival, akkor ezt az egyezési feltételt kell használnia a sorok törléséhez a céltáblából.
SQL Server MERGE utasítás példa
Tegyük fel, hogy két táblánk van sales.category
és sales.category_staging
, amelyek az értékesítéseket termékkategóriák szerint tárolják.
Ha frissíteni kívánja az adatokat az sales.category
(céltáblára) a sales.category_staging
(forrás táblázat) értékeivel, használja a következő MERGE
utasítás:
Ebben a példában egyesítési feltételként mindkét tábla category_id
oszlopainak értékeit használtuk.
- Először a sorokat a
sales.category_staging
táblázat 1, 3, 4 azonosítójával egyezik a céltábla soraival, ezért aMERGE
utasítás frissíti az értékeket kategória neve és összege oszlopokban asales.category
táblázatban. - Másodszor, a
sales.category_staging
táblázatból az 5. és 6. azonosítójú sorok nem léteznek. asales.category
táblázatban, így aMERGE
utasítás beszúrja ezeket a sorokat a céltáblába. - Harmadszor, a sor a
sales.category
tábla 2. azonosítójával nem létezik asales.sales_staging
táblában, ezért aMERGE
utasítás törli ezt a sort.
Az összevonás eredményeként az sales.category
táblázat adatai teljesen szinkronizálódnak a sales.category_staging
táblázat.
Ebben az oktatóanyagban megtanulta, hogyan kell használni az SQL Server MERGE
utasítást a változtatások végrehajtásához. egy táblázatban, egy másik táblázat megfelelő értékei alapján.