logo

MySQL UPDATE JOIN

Die UPDATE-Abfrage in MySQL ist eine DML-Anweisung, die zum Ändern der Daten einer Tabelle verwendet wird. Die UPDATE-Abfrage muss die SET- und WHERE-Klausel erfordern. Die SET-Klausel wird verwendet, um die Werte der in der WHERE-Klausel angegebenen Spalte zu ändern.

Die JOIN-Klausel in MySQL wird in der Anweisung verwendet, um Daten abzurufen, indem mehrere Tabellen innerhalb einer einzigen Abfrage verknüpft werden.

Der UPDATE JOIN ist eine MySQL-Anweisung, die zum Durchführen tabellenübergreifender Aktualisierungen verwendet wird. Das bedeutet, dass wir eine Tabelle mithilfe einer anderen Tabelle mit der JOIN-Klauselbedingung aktualisieren können . Diese Abfrage aktualisiert und ändert die Daten, auf deren Grundlage mehr als eine Tabelle verknüpft wird PRIMÄR Schlüssel und AUSLÄNDISCH Schlüssel und eine angegebene Join-Bedingung. Mit dem können wir einzelne oder mehrere Spalten gleichzeitig aktualisieren UPDATE-Abfrage .

HINWEIS: Die MySQL UPDATE JOIN-Anweisung wird ab Version 4.0 oder höher unterstützt.

Syntax

Im Folgenden finden Sie eine grundlegende Syntax der UPDATE JOIN-Anweisung zum Ändern von Datensätzen in der MySQL-Tabelle:

 UPDATE Tab1, Tab2, [INNER JOIN | LEFT JOIN] Tab1 ON Tab1.C1 = Tab2.C1 SET Tab1.C2 = Tab2.C2, Tab2.C3 = expression WHERE Condition; 

In der obigen MySQL UPDATE JOIN-Syntax:

Zuerst haben wir die beiden Tabellen angegeben: die Haupttabelle (Tab1) und eine weitere Tabelle (Tab2) nach der UPDATE-Klausel. Nach der UPDATE-Klausel ist die Angabe mindestens einer Tabelle erforderlich. Als nächstes haben wir die Typen angegeben JOIN-Klauseln , also entweder INNER JOIN oder LINKS BEITRETEN , die direkt nach der UPDATE-Klausel erscheinen, und dann ein Join-Prädikat, das nach dem ON-Schlüsselwort angegeben wird. Dann müssen wir die neuen Werte den Spalten in Tab1 und/oder Tab2 zuweisen, um sie in der Tabelle zu ändern. Schließlich wird die Bedingung der WHERE-Klausel verwendet, um die zu aktualisierenden Zeilen einzuschränken.

Wie funktioniert UPDATE JOIN in MySQL?

Der UPDATE JOIN-Workprozess in MySQL ist die gleiche wie in der obigen Syntax beschrieben. Manchmal stellten wir jedoch fest, dass diese Abfrage allein die tabellenübergreifende Aktualisierung durchführte, ohne dass Verknüpfungen erforderlich waren. Die folgende Syntax ist eine weitere Möglichkeit, eine Tabelle mithilfe einer anderen Tabelle zu aktualisieren :

Analysieren Sie den String in int
 UPDATE Tab1, Tab2, SET Tab1.C2 = Tab2.C2, Tab2.C3 = expression WHERE Tab1.C1 = Tab2.C1 AND condition; 

Die obige UPDATE-Anweisung erzeugt das gleiche Ergebnis wie die UPDATE JOIN-Anweisung mit einer INNER JOIN- oder LEFT JOIN-Klausel. Das bedeutet, dass wir die obige Syntax in die oben angezeigte UPDATE JOIN-Syntax umschreiben können:

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

Nehmen wir einige Beispiele, um zu verstehen, wie die UPDATE JOIN-Anweisung in einer MySQL-Tabelle funktioniert.

UPDATE JOIN-Beispiele

Zuerst erstellen wir zwei Tabellen mit dem Namen Leistung Und Mitarbeiter , und beide Tabellen sind über einen Fremdschlüssel miteinander verbunden. Hier ist die „Leistung“ ein übergeordnete Tabelle und „Mitarbeiter“ ist das Kind Tisch . Die folgenden Skripte erstellen beide Tabellen zusammen mit ihren Datensätzen.

Tabelle: Leistung

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

Füllen Sie als Nächstes die Datensätze in der Tabelle mit der INSERT-Anweisung.

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

Führen Sie dann die SELECT-Abfrage aus, um die Daten zu überprüfen, wie im folgenden Bild gezeigt:

Beitritt zum MySQL-Update

Tabelle: Mitarbeiter

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

Füllen Sie als Nächstes die Datensätze in der Tabelle mit der INSERT-Anweisung.

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

Führen Sie dann die SELECT-Abfrage aus, um die Daten zu überprüfen, wie im folgenden Bild gezeigt:

Beitritt zum MySQL-Update

UPDATE JOIN mit INNER JOIN Beispiel

Angenommen, wir möchten die aktualisieren Gehalt des Mitarbeiters entsprechend seiner Leistung . Wir können das Gehalt eines Mitarbeiters in der Tabelle „Employees“ mithilfe der UPDATE INNER JOIN-Anweisung aufgrund der Leistung aktualisieren Prozentsatz wird in der Leistungstabelle gespeichert.

In den obigen Tabellen müssen wir das verwenden Leistung Feld, um der Tabelle „Mitarbeiter und Leistung“ beizutreten. Siehe die folgende Abfrage:

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

Nachdem wir die obige Anweisung ausgeführt haben, erhalten wir die folgende Ausgabe, in der wir sehen können, dass die Gehaltsspalte des Mitarbeiters erfolgreich aktualisiert wurde.

Beitritt zum MySQL-Update

Lassen Sie uns verstehen, wie diese Abfrage in MySQL funktioniert. In der Abfrage haben wir nach der UPDATE-Klausel nur die Tabelle „Employees“ angegeben. Dies liegt daran, dass wir den Datensatz nur in der Tabelle „Employees“ ändern möchten, nicht in beiden Tabellen.

Die Abfrage vergleicht die Leistungsspaltenwerte für jede Zeile in der Tabelle „Mitarbeiter“ mit der Leistungsspalte der Tabelle „Leistung“. Wenn die entsprechende Leistungsspalte abgerufen wird, wird der Prozentsatz aus der Leistungstabelle übernommen und die Gehaltsspalte der Mitarbeitertabelle aktualisiert. Diese Abfrage aktualisiert alle Datensätze in der Tabelle „Employees“, da wir die WHERE-Klausel in der UPDATE JOIN-Abfrage nicht angegeben haben.

UPDATE JOIN mit LEFT JOIN Beispiel

Um den UPDATE JOIN mit LEFT JOIN zu verstehen, müssen wir zunächst zwei neue Zeilen in die Employees-Tabelle einfügen:

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

Da es sich bei diesen Mitarbeitern um Neueinstellungen handelt, sind deren Leistungsnachweise nicht verfügbar. Siehe die folgende Ausgabe:

Beitritt zum MySQL-Update

Wenn wir das Gehalt für neu eingestellte Mitarbeiter aktualisieren möchten , können wir die UPDATE INNER JOIN-Abfrage nicht verwenden. Dies liegt daran, dass ihre Leistungsdaten in der Leistungstabelle nicht verfügbar sind. Daher werden wir die UPDATE LEFT JOIN-Anweisung verwenden, um diesen Bedarf zu erfüllen.

Die UPDATE LEFT JOIN-Anweisung in MySQL wird verwendet, um eine Zeile in einer Tabelle zu aktualisieren, wenn in der entsprechenden Zeile einer anderen Tabelle keine Datensätze gefunden werden.

Zum Beispiel Wenn wir das Gehalt eines neu eingestellten Mitarbeiters um 2,5 % erhöhen möchten, können wir dies mithilfe der folgenden Erklärung tun:

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

Nachdem wir die obige Abfrage ausgeführt haben, erhalten wir die Ausgabe wie im folgenden Bild, wo wir sehen können, dass das Gehalt der neu eingestellten Mitarbeiter erfolgreich aktualisiert wurde.

Beitritt zum MySQL-Update

In diesem Artikel haben wir die MySQL Update Join-Anweisung kennengelernt, die es uns ermöglicht, die vorhandenen Daten in einer Tabelle mit den neuen Daten aus einer anderen Tabelle mithilfe der JOIN-Klauselbedingung zu ändern. Diese Abfrage ist von Vorteil, wenn wir bestimmte in der WHERE-Klausel angegebene Spalten ändern und dabei entweder die Klauseln INNER JOIN oder LEFT JOIN verwenden müssen.