UPDATE-spørring i MySQL er en DML-setning som brukes til å endre dataene i en tabell. UPDATE-spørringen må kreve SET og WHERE-leddet. SET-leddet brukes til å endre verdiene til kolonnen spesifisert i WHERE-leddet.
JOIN-klausul i MySQL brukes i setningen for å hente data ved å slå sammen flere tabeller i en enkelt spørring.
UPDATE JOIN er en MySQL-setning som brukes til å utføre krysstabelloppdateringer som betyr at vi kan oppdatere en tabell ved å bruke en annen tabell med JOIN-klausulbetingelsen . Denne spørringen oppdaterer og endrer dataene der mer enn én tabell er slått sammen basert på HOVED Nøkkel og FREMMED Nøkkel og en spesifisert sammenføyningstilstand. Vi kan oppdatere én eller flere kolonner om gangen ved å bruke OPPDATERING forespørsel .
MERK: MySQL UPDATE JOIN-setningen støttes fra versjon 4.0 eller høyere.
Syntaks
Følgende er en grunnleggende syntaks for UPDATE JOIN-setningen for å endre posten i MySQL-tabellen:
UPDATE Tab1, Tab2, [INNER JOIN | LEFT JOIN] Tab1 ON Tab1.C1 = Tab2.C1 SET Tab1.C2 = Tab2.C2, Tab2.C3 = expression WHERE Condition;
I MySQL UPDATE JOIN-syntaksen ovenfor:
Først har vi spesifisert de to tabellene: hovedtabellen (Tab1) og en annen tabell (tab2) etter UPDATE-klausulen. Etter UPDATE-klausulen er det nødvendig å spesifisere minst én tabell. Deretter har vi spesifisert typene JOIN-klausuler , dvs. enten INNER JOIN eller VENSTRE BLI MED , som vises rett etter UPDATE-klausulen og deretter et join-predikat spesifisert etter ON-nøkkelordet. Deretter må vi tilordne de nye verdiene til kolonnene i Tab1 og/eller Tab2 for modifikasjon i tabellen. Til slutt brukes WHERE-klausulbetingelsen for å begrense rader for oppdatering.
Hvordan fungerer UPDATE JOIN i MySQL?
Arbeidsprosessen UPDATE JOIN inn MySQL er den samme som beskrevet i syntaksen ovenfor. Men noen ganger vil vi oppdage at denne spørringen alene utførte krysstabelloppdateringen uten å involvere noen sammenføyninger. Følgende syntaks er en annen måte å oppdatere en tabell ved å bruke en annen tabell :
'murerens formel'
UPDATE Tab1, Tab2, SET Tab1.C2 = Tab2.C2, Tab2.C3 = expression WHERE Tab1.C1 = Tab2.C1 AND condition;
UPDATE-setningen ovenfor gir samme resultat som UPDATE JOIN med en INNER JOIN- eller LEFT JOIN-klausul. Det betyr at vi kan omskrive syntaksen ovenfor som UPDATE JOIN-syntaks vist ovenfor:
UPDATE Tab1,Tab2 INNER JOIN Tab2 ON Tab1.C1 = Tab2.C1 SET Tab1.C2 = Taba2.C2, Tab2.C3 = expression WHERE condition
La oss ta noen eksempler for å forstå hvordan UPDATE JOIN-setningen fungerer i MySQL-tabellen.
OPPDATERING BLI MED Eksempler
Først vil vi lage to navngitte tabeller Opptreden og Ansatt , og begge tabellene er relatert gjennom en fremmednøkkel. Her er 'Ytelse' en foreldretabell , og 'Ansatte' er barn bord . Følgende skript oppretter begge tabellene sammen med postene deres.
Tabell: Ytelse
CREATE TABLE Performance ( performance INT(11) NOT NULL, percentage FLOAT NOT NULL, PRIMARY KEY (performance) );
Deretter fyller du postene i tabellen ved å bruke INSERT-setningen.
INSERT INTO Performance (performance, percentage) VALUES(101,0), (102,0.01), (103,0.03), (104,0.05), (105,0.08);
Deretter utfører du SELECT-spørringen for å bekrefte dataene som vist i bildet nedenfor:
Tabell: Ansatte
CREATE TABLE Employees ( id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, performance INT(11) DEFAULT NULL, salary FLOAT DEFAULT NULL, CONSTRAINT fk_performance FOREIGN KEY (performance) REFERENCES Performance (performance) );
Deretter fyller du postene i tabellen ved å bruke INSERT-setningen.
INSERT INTO Employees (name, performance, salary) VALUES('Mary', 101, 55000), ('John', 103, 65000), ('Suzi', 104, 85000), ('Gracia', 105, 110000), ('Nancy Johnson', 103, 95000), ('Joseph', 102, 45000), ('Donald', 103, 50000);
Deretter utfører du SELECT-spørringen for å bekrefte dataene som vist i bildet nedenfor:
OPPDATERING JOIN med INNER JOIN Eksempel
Anta at vi ønsker å oppdatere ansattes lønn på grunnlag av deres prestasjoner . Vi kan oppdatere en ansatts lønn i tabellen Ansatte ved å bruke UPDATE INNER JOIN-erklæringen fordi ytelsen prosentdel er lagret i ytelsestabellen.
I tabellene ovenfor må vi bruke opptreden feltet for å bli med i tabellen Ansatte og ytelse. Se spørringen nedenfor:
UPDATE Employees e INNER JOIN Performance p ON e.performance = p.performance SET salary = salary + salary * percentage;
Etter å ha utført setningen ovenfor, vil vi få utgangen nedenfor, der vi kan se at den ansattes lønnskolonne er oppdatert.
La oss forstå hvordan denne spørringen fungerer i MySQL. I spørringen har vi kun spesifisert tabellen Ansatte etter UPDATE-klausulen. Det er fordi vi ønsker å endre posten kun i tabellen Ansatte, ikke i begge tabellene.
Spørringen kontrollerer ytelseskolonnens verdier for hver rad i 'Ansatte'-tabellen mot ytelseskolonnen i 'Ytelse'-tabellen. Hvis den får den matchede ytelseskolonnen, tar den prosentandelen i ytelsestabellen og oppdaterer lønnskolonnen i tabellen Ansatte. Denne spørringen oppdaterer alle poster i Employees-tabellen fordi vi ikke har spesifisert WHERE-klausulen i UPDATE JOIN-spørringen.
OPPDATER JOIN med LEFT JOIN Eksempel
For å forstå UPDATE JOIN med LEFT JOIN, må vi først sette inn to nye rader i Employees-tabellen:
INSERT INTO Employees (name, performance, salary) VALUES('William', NULL, 73000), ('Rayan', NULL, 92000);
Siden disse ansatte er nyansatte, er deres resultatrekord ikke tilgjengelig. Se utgangen nedenfor:
Dersom vi ønsker å oppdatere lønnen for nyansatte , kan vi ikke bruke UPDATE INNER JOIN-spørsmålet. Det skyldes at ytelsesdataene deres ikke er tilgjengelige i ytelsestabellen. Derfor vil vi bruke UPDATE LEFT JOIN-erklæringen for å oppfylle dette behovet.
UPDATE LEFT JOIN-setningen i MySQL brukes til å oppdatere en rad i en tabell når det ikke finnes noen poster i en annen tabells tilsvarende rad.
For eksempel , hvis vi ønsker å øke lønnen for en nyansatt medarbeider med 2,5 %, kan vi gjøre dette ved hjelp av følgende uttalelse:
UPDATE Employees e LEFT JOIN Performance p ON e.performance = p.performance SET salary = salary + salary * 0.025 WHERE p.percentage IS NULL;
Etter å ha utført spørringen ovenfor, vil vi få utdata som bildet nedenfor der vi kan se at lønnen til de nyansatte ansatte er vellykket oppdatert.
I denne artikkelen har vi lært MySQL Update Join-setningen som lar oss endre eksisterende data i en tabell med de nye dataene fra en annen tabell med JOIN-klausulbetingelsen. Denne spørringen er fordelaktig når vi trenger å endre visse kolonner spesifisert i WHERE-leddet sammen med enten bruk av INNER JOIN- eller LEFT JOIN-ledd.