logo

SQL-OPPDATERING med JOIN

SQL OPPDATERING BLI MED betyr at vi vil oppdatere en tabell ved å bruke en annen tabell og sammenføyningsbetingelse.

La oss ta et eksempel på et kundebord. Jeg har oppdatert kundetabell som inneholder siste kundeinformasjon fra et annet kildesystem. Jeg ønsker å oppdatere kundetabellen med siste data. I slike tilfeller vil jeg utføre sammenføyning mellom måltabell og kildetabell ved hjelp av sammenføyning på kunde-ID.

La oss se syntaks av SQL UPDATE-spørring med JOIN-setning.

 UPDATE customer_table INNER JOIN Customer_table ON customer_table.rel_cust_name = customer_table.cust_id SET customer_table.rel_cust_name = customer_table.cust_name 

Hvordan bruke flere tabeller i SQL UPDATE-setning med JOIN

La oss ta to tabeller, tabell 1 og tabell 2.

Lag tabell 1

 CREATE TABLE table1 (column1 INT, column2 INT, column3 VARCHAR (100)) INSERT INTO table1 (col1, col2, col3) SELECT 1, 11, 'FIRST' UNION ALL SELECT 11,12, 'SECOND' UNION ALL SELECT 21, 13, 'THIRD' UNION ALL SELECT 31, 14, 'FOURTH' 

Lag tabell 2

 CREATE TABLE table2 (column1 INT, column2 INT, column3 VARCHAR (100)) INSERT INTO table2 (col1, col2, col3) SELECT 1, 21, 'TWO-ONE' UNION ALL SELECT 11, 22, 'TWO-TWO' UNION ALL SELECT 21, 23, 'TWO-THREE' UNION ALL SELECT 31, 24, 'TWO-FOUR' 

Sjekk nå innholdet i tabellen.

 SELECT * FROM table_1 
 SELECT * FROM table_2 
Kol 1Kol 2Kol 3
11elleveFørst
2elleve12Sekund
3tjueen 1. 3 Tredje
431 14 Fjerde

Kol 1Kol 2Kol 3
11tjueenTo-En
2elleve22To-to
3tjueen 23 To tre
431 24 To-fire

Vårt krav er at vi har tabell 2 som har to rader der Kol 1 er 21 og 31. Vi ønsker å oppdatere verdien fra tabell 2 til tabell 1 for radene hvor Kol 1 er 21 og 31.

Vi ønsker også kun å oppdatere verdiene til Col 2 og Col 3.

Den enkleste og vanligste måten er å bruke join-klausulen i oppdateringssetningen og bruke flere tabeller i oppdateringssetningen.

 UPDATE table 1 SET Col 2 = t2.Col2, Col 3 = t2.Col3 FROM table1 t1 INNER JOIN table 2 t2 ON t1.Col1 = t2.col1 WHERE t1.Col1 IN (21,31) 

Sjekk innholdet i tabellen

VELG FRA tabell 1

VELG FRA tabell 2

Kol 1Kol 2Kol 3
11elleveFørst
2elleve12Sekund
3tjueen 23 To tre
431 24 To-fire

Kol 1Kol 2Kol 3
11tjueenFørst
2elleve22Sekund
3tjueen 23 To tre
431 24 To-fire

Her kan vi se at bruk av join-klausul i oppdateringserklæring. Vi har slått sammen to tabeller ved bruk av join-klausul.