logo

SQL MERGE-erklæring

SQL MERGE-erklæring kombinerer SETT INN , SLETT , og OPPDATER uttalelser i ett enkelt søk.

finn i streng c++

MERGE Statement i SQL

MERGE-setning i SQL brukes til å utføre innsetting, oppdatering og sletting av en måltabell basert på resultatene av JOIN med en kildetabell . Dette lar brukere synkronisere to tabeller ved å utføre operasjoner på én tabell basert på resultater fra den andre tabellen.



MERGE-setningen sammenligner data mellom en kildetabell og en måltabell basert på spesifiserte nøkkelfelt. Den utfører passende handlinger som å sette inn nye poster, oppdatere eksisterende, og slette eller flagge poster som ikke lenger finnes i kilden.

Denne erklæringen gir en fleksibel måte å administrere dataendringer på og brukes ofte i scenarier som vedlikehold Sakte skiftende dimensjoner ( SCD ) i SLUT TIL måltabell
BRUKER kildetabell
PÅ merge_condition
NÅR SAMMEN DETTE
OPPDATERING SET kolonne1 = verdi1 [, kolonne2 = verdi2 …]
NÅR IKKE SAMMEN SÅ
INSERT (kolonne1 [, kolonne2 …])
VERDIER (verdi1 [, verdi2 …]);

Eksempel på SQL MERGE-setning

Anta at det er to tabeller:



  • PRODUKTLISTE som er tabellen som inneholder gjeldende detaljer om produktene som er tilgjengelige med feltene P_ID, P_NAME og P_PRICE som tilsvarer ID, navn og pris for hvert produkt.
  • OPPDATERT_LISTE som er tabellen som inneholder de nye detaljene om produktene som er tilgjengelige med feltene P_ID, P_NAME og P_PRICE som tilsvarer ID, navn og pris for hvert produkt.

to bord


Oppgaven er å oppdatere detaljene for produktene i PRODUCT_LIST i henhold til UPDATED_LIST.

Løsning



ascii-tabell i c

For å forklare dette eksemplet bedre, la oss dele opp eksemplet i trinn.

Trinn 1: Gjenkjenne TARGET- og SOURCE-tabellen

Så i dette eksemplet, siden det blir bedt om å oppdatere produktene i PRODUCT_LIST i henhold til UPDATED_LIST, vil derfor PRODUCT_LIST fungere som TARGET og UPDATED_LIST vil fungere som SOURCE-tabellen.

mål- og kildetabell

Trinn 2: Gjenkjenne operasjonene som skal utføres.

Nå som det kan sees at det er tre uoverensstemmelser mellom TARGET- og SOURCE-tabellen, som er:

1. Kostnaden for KAFFE i TARGET er 15,00 mens den i SOURCE er 25,00

 PRODUCT_LIST 102 COFFEE 15.00   UPDATED_LIST 102 COFFEE 25.00>

2. Det er ikke noe KEKS-produkt i SOURCE, men det er i TARGET

 PRODUCT_LIST 103 BISCUIT 20.00>

3. Det er ikke noe CHIPS-produkt i TARGET, men det er i SOURCE

 UPDATED_LIST 104 CHIPS 22.00>

Derfor må tre operasjoner utføres i TARGET i henhold til avvikene ovenfor. De er:

1. OPPDATERING

102 COFFEE 25.00>

2. SLETT-operasjon

for loop java
103 BISCUIT 20.00>

3. INSERT operasjon

104 CHIPS 22.00>

Trinn 3: Skriv SQL-spørringen

De SQL-spørring å utføre de ovennevnte operasjonene ved hjelp av MERGE-uttalelse er:

SQL
/* Selecting the Target and the Source */ MERGE PRODUCT_LIST AS TARGET  USING UPDATE_LIST AS SOURCE   /* 1. Performing the UPDATE operation */  /* If the P_ID is same,   check for change in P_NAME or P_PRICE */  ON (TARGET.P_ID = SOURCE.P_ID)  WHEN MATCHED   AND TARGET.P_NAME  SOURCE.P_NAME   OR TARGET.P_PRICE  SOURCE.P_PRICE  /* Update the records in TARGET */  THEN UPDATE   SET TARGET.P_NAME = SOURCE.P_NAME,  TARGET.P_PRICE = SOURCE.P_PRICE    /* 2. Performing the INSERT operation */  /* When no records are matched with TARGET table   Then insert the records in the target table */  WHEN NOT MATCHED BY TARGET   THEN INSERT (P_ID, P_NAME, P_PRICE)   VALUES (SOURCE.P_ID, SOURCE.P_NAME, SOURCE.P_PRICE)  /* 3. Performing the DELETE operation */  /* When no records are matched with SOURCE table   Then delete the records from the target table */  WHEN NOT MATCHED BY SOURCE   THEN DELETE /* END OF MERGE */>

Produksjon:

 PRODUCT_LIST P_ID P_NAME P_PRICE 101 TEA 10.00  102 COFFEE 25.00 104 CHIPS 22.00>

Så på denne måten kan vi utføre alle disse tre hovedsetningene i SQL sammen ved hjelp av MERGE-setningen.

Merk: Ethvert navn annet enn mål og kilde kan brukes i MERGE-syntaksen. De brukes kun for å gi deg en bedre forklaring.

Viktige punkter om SQL MERGE-erklæring

  • SQL MERGE-setningen kombineres SETT INN , OPPDATER , og SLETT operasjoner i én enkelt setning, noe som muliggjør effektiv datasynkronisering mellom kilde- og måltabeller.
  • Det gir fleksibilitet i å tilpasse komplekse SQL-skript ved å håndtere flere datamanipulasjonsoperasjoner i en enkelt transaksjon.
  • SQL MERGE-setningen brukes ofte i scenarier som vedlikehold av Slowly Changing Dimensions (SCD) i datavarehus.
  • Riktig indeksering, optimaliserte sammenføyningsforhold og filtrering av kildetabellen for nødvendige poster kan optimalisere ytelsen til MERGE-setningen.