logo

MySQL UPPDATERING GÅ MED

UPDATE-fråga i MySQL är en DML-sats som används för att modifiera data i en tabell. UPDATE-frågan måste kräva SET och WHERE-satsen. SET-satsen används för att ändra värdena för kolumnen som anges i WHERE-satsen.

JOIN-satsen i MySQL används i satsen för att hämta data genom att sammanfoga flera tabeller i en enda fråga.

UPDATE JOIN är en MySQL-sats som används för att utföra korstabelluppdateringar som innebär att vi kan uppdatera en tabell med en annan tabell med JOIN-satsvillkoret . Denna fråga uppdaterar och ändrar data där mer än en tabell ansluts baserat på PRIMÄR Nyckel och UTLÄNDSK Nyckel och ett specificerat sammanfogningsvillkor. Vi kan uppdatera enstaka eller flera kolumner åt gången med hjälp av UPPDATERA fråga .

OBS: MySQL UPDATE JOIN-satsen stöds från version 4.0 eller senare.

Syntax

Följande är en grundläggande syntax för UPDATE JOIN-satsen för att ändra 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 ovanstående MySQL UPDATE JOIN-syntax:

Först har vi specificerat de två tabellerna: huvudtabellen (Tab1) och en annan tabell (tab2) efter UPDATE-satsen. Efter UPDATE-satsen måste du ange minst en tabell. Därefter har vi specificerat typerna av JOIN-klausuler , dvs antingen INNER JOIN eller VÄNSTER GÅ MED , som visas direkt efter UPDATE-satsen och sedan ett join-predikat som anges efter nyckelordet ON. Sedan måste vi tilldela de nya värdena till kolumnerna i Tab1 och/eller Tab2 för modifiering i tabellen. Slutligen används WHERE-satsvillkoret för att begränsa rader för uppdatering.

Hur fungerar UPDATE JOIN i MySQL?

Arbetsprocessen UPDATE JOIN in MySQL är samma som beskrivs i ovanstående syntax. Men ibland skulle vi upptäcka att denna fråga ensam utförde korstabellsuppdateringen utan att involvera några anslutningar. Följande syntax är ett annat sätt att uppdatera en tabell med en annan tabell :

stänga av utvecklarläget
 UPDATE Tab1, Tab2, SET Tab1.C2 = Tab2.C2, Tab2.C3 = expression WHERE Tab1.C1 = Tab2.C1 AND condition; 

Ovanstående UPDATE-sats ger samma resultat som UPDATE JOIN med en INNER JOIN- eller LEFT JOIN-sats. Det betyder att vi kan skriva om ovanstående syntax som UPDATE JOIN-syntax som visas ovan:

 UPDATE Tab1,Tab2 INNER JOIN Tab2 ON Tab1.C1 = Tab2.C1 SET Tab1.C2 = Taba2.C2, Tab2.C3 = expression WHERE condition 

Låt oss ta några exempel för att förstå hur UPDATE JOIN-satsen fungerar i MySQL-tabellen.

UPPDATERA JOIN Exempel

Först skapar vi två namngivna tabeller Prestanda och Anställd , och båda tabellerna är relaterade genom en främmande nyckel. Här är 'Prestandan' en föräldrabord , och 'Anställda' är barn tabell . Följande skript skapar båda tabellerna tillsammans med deras poster.

Tabell: Prestanda

 CREATE TABLE Performance ( performance INT(11) NOT NULL, percentage FLOAT NOT NULL, PRIMARY KEY (performance) ); 

Fyll sedan i posterna i tabellen med hjälp av INSERT-satsen.

 INSERT INTO Performance (performance, percentage) VALUES(101,0), (102,0.01), (103,0.03), (104,0.05), (105,0.08); 

Kör sedan SELECT-frågan för att verifiera data som visas i bilden nedan:

MySQL Update Gå med

Tabell: Anställda

 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) ); 

Fyll sedan i posterna i tabellen med hjälp av INSERT-satsen.

 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); 

Kör sedan SELECT-frågan för att verifiera data som visas i bilden nedan:

MySQL Update Gå med

UPPDATERA JOIN med INNER JOIN Exempel

Anta att vi vill uppdatera anställdas lön på grundval av deras prestation . Vi kan uppdatera en anställds lön i tabellen Anställda genom att använda uttalandet UPDATE INNER JOIN eftersom prestationen procentsats lagras i prestandatabellen.

I ovanstående tabeller måste vi använda prestanda för att gå med i tabellen Anställda och prestationer. Se frågan nedan:

 UPDATE Employees e INNER JOIN Performance p ON e.performance = p.performance SET salary = salary + salary * percentage; 

Efter att ha utfört ovanstående uttalande kommer vi att få utdata nedan, där vi kan se att medarbetarens lönekolumn har uppdaterats framgångsrikt.

MySQL Update Gå med

Låt oss förstå hur den här frågan fungerar i MySQL. I frågan har vi endast specificerat tabellen Anställda efter UPDATE-klausulen. Det beror på att vi bara vill ändra posten i tabellen Anställda, inte i båda tabellerna.

Frågan kontrollerar prestandakolumnvärdena för varje rad i tabellen 'Anställda' mot prestandakolumnen i tabellen 'Prestanda'. Om den kommer att få den matchade prestationskolumnen, tar den procentandelen i Prestationstabellen och uppdaterar tabellen Anställdas lönekolumn. Den här frågan uppdaterar alla poster i tabellen Employees eftersom vi inte har specificerat WHERE-satsen i UPDATE JOIN-frågan.

UPPDATERA JOIN med LEFT JOIN Exempel

För att förstå UPPDATERA JOIN med LEFT JOIN måste vi först infoga två nya rader i tabellen Anställda:

 INSERT INTO Employees (name, performance, salary) VALUES('William', NULL, 73000), ('Rayan', NULL, 92000); 

Eftersom dessa anställda är nyanställda är deras resultatrekord inte tillgängligt. Se utgången nedan:

MySQL Update Gå med

Om vi ​​vill uppdatera lönen för nyanställda , vi kan inte använda UPDATE INNER JOIN-frågan. Det beror på att deras prestandadata inte är tillgängliga i prestandatabellen. Därför kommer vi att använda uttalandet UPDATE LEFT JOIN för att uppfylla detta behov.

UPDATE LEFT JOIN-satsen i MySQL används för att uppdatera en rad i en tabell när det inte finns några poster i en annan tabells motsvarande rad.

Till exempel , om vi vill höja lönen för en nyanställd medarbetare med 2,5 % kan vi göra detta med hjälp av följande uttalande:

 UPDATE Employees e LEFT JOIN Performance p ON e.performance = p.performance SET salary = salary + salary * 0.025 WHERE p.percentage IS NULL; 

Efter att ha utfört ovanstående fråga kommer vi att få utdata som nedanstående bild där vi kan se att lönen för de nyanställda anställda har uppdaterats framgångsrikt.

MySQL Update Gå med

I den här artikeln har vi lärt oss MySQL Update Join-satsen som gör att vi kan ändra befintliga data i en tabell med nya data från en annan tabell med JOIN-satsvillkoret. Den här frågan är fördelaktig när vi behöver ändra vissa kolumner som anges i WHERE-satsen tillsammans med antingen INNER JOIN- eller LEFT JOIN-satsen.