SQL Server MERGE (Suomi)

Yhteenveto: Tässä opetusohjelmassa opit käyttämään SQL Server -palvelinta MERGE lauseke päivittää taulukon tiedot toisen taulukon vastaavien arvojen perusteella.

Johdanto SQL Server MERGE -lauseke

Oletetaan, että sinulla on kaksi taulukkoa, joita kutsutaan lähde- ja kohdetaulukoiksi, ja sinun on päivitä kohdetaulukko lähdetaulukosta sovitettujen arvojen perusteella. On olemassa kolme tapausta:

  1. Lähdetaulukossa on joitain rivejä, joita ei ole kohdetaulukossa. Tässä tapauksessa sinun on lisättävä lähdetaulukossa olevia rivejä kohdetaulukkoon.
  2. Kohdetaulukossa on joitain rivejä, joita ei ole lähdetaulukossa. Tässä tapauksessa sinun on poistettava rivit kohdetaulukosta.
  3. Lähdetaulukossa on joitain rivejä, joilla on samat avaimet kuin kohdetaulukon riveillä. Näillä riveillä on kuitenkin erilaiset arvot avaimien ulkopuolisissa sarakkeissa. Tässä tapauksessa sinun on päivitettävä kohdetaulukon rivit lähdetaulukon arvoilla.

Seuraava kuva kuvaa lähde- ja kohdetaulukot vastaavilla toiminnoilla: insert, päivitä ja poista:

Jos käytä INSERT, UPDATE ja DELETE -lauseketta erikseen, sinun on rakennettava kolme erillistä lauseet päivittää tiedot kohdetaulukkoon lähdetaulukon vastaavilla riveillä.

SQL Server tarjoaa kuitenkin lauseen MERGE, jonka avulla voit suorittaa kolme toimia samanaikaisesti. Seuraava näyttää MERGE -lausekkeen syntaksin:

Code language: SQL (Structured Query Language) (sql)

Määritä ensin kohdetaulukko ja lähde MERGE -lausekkeen taulukko.

Toiseksi merge_condition määrittää, miten lähdetaulukon rivit vastaavat kohdetaulukon rivit. Se on samanlainen kuin liittymisehdon liittymisehdossa. Tyypillisesti käytät avainsarakkeita joko ensisijaisella avaimella tai yksilöivällä avaimella.

Kolmanneksi merge_condition johtaa kolmeen tilaan: MATCHED, NOT MATCHED ja NOT MATCHED BY SOURCE.

  • MATCHED: nämä ovat rivit, jotka vastaavat yhdistämisehtoa. Kaaviossa ne näkyvät sinisinä. Vastaavia rivejä varten sinun on päivitettävä kohdetaulukon rivisarakkeet lähdetaulukon arvoilla.
  • NOT MATCHED: nämä ovat lähteen rivit taulukossa, jossa kohdetaulukossa ei ole yhtään riviä. Kaaviossa ne näkyvät oransseina. Tässä tapauksessa sinun on lisättävä rivit lähdetaulukosta kohdetaulukkoon. Huomaa, että NOT MATCHED tunnetaan myös nimellä NOT MATCHED BY TARGET.
  • NOT MATCHED BY SOURCE : nämä ovat kohdetaulukon rivit, jotka eivät vastaa yhtään lähdetaulukon riviä. Ne näkyvät kaaviossa vihreinä. Jos haluat synkronoida kohdetaulukon lähdetaulukon tietojen kanssa, sinun on käytettävä tätä vastaavuusehtoa rivejen poistamiseksi kohdetaulukosta.

SQL Server MERGE -esimerkki

Oletetaan, että meillä on kaksi taulukkoa sales.category ja sales.category_staging, jotka tallentavat myynnin tuoteryhmittäin.

Jos haluat päivittää tiedot sales.category (kohdetaulukko) -arvoon sales.category_staging (lähdetaulukko) -arvoon, käytä seuraavaa MERGE -lauseke:

Tässä esimerkissä käytimme yhdistämisehtona molempien taulukoiden category_id -sarakkeiden arvoja.

  • Ensinnäkin rivit tunnisteilla 1, 3, 4 sales.category_staging -taulukosta vastaa kohdetaulukon rivejä, siksi lauseke MERGE päivittää arvot luokan nimi ja summa -sarakkeissa sales.category -taulukossa.
  • Toiseksi sales.category_staging -taulukon rivejä, joiden tunnus on 5 ja 6, ei ole olemassa sales.category -taulukossa, joten lauseke MERGE lisää nämä rivit kohdetaulukkoon.
  • Kolmanneksi rivi tunnuksella 2 sales.category -taulukosta ei ole sales.sales_staging -taulukossa, joten MERGE -lauseke poistaa tämän rivin.

Sulautumisen seurauksena sales.category -taulukon tiedot synkronoidaan täysin taulukon tietojen kanssa. sales.category_staging taulukko.

Tässä opetusohjelmassa olet oppinut käyttämään SQL Server MERGE -käskyä muutosten tekoon taulukossa toisen taulukon vastaavien arvojen perusteella.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *