Verwendung von UPDATE JOIN in MySQL

Preet Sanghavi 28 März 2022
Verwendung von UPDATE JOIN in MySQL

In diesem Tutorial wird die Verwendung der Anweisung UPDATE JOIN in einer MySQL-Datenbank vorgestellt.

Wir verwenden im Allgemeinen JOIN, um Zeilen in einer bestimmten Tabelle zu durchlaufen, die ähnliche Zeilen in einer anderen Tabelle hat oder nicht. Wir können die Klausel JOIN zusammen mit der Anweisung UPDATE verwenden, um mehrere Tabellenaktualisierungen zu implementieren.

Die grundlegende Syntax von MySQL UPDATE JOIN lässt sich wie folgt veranschaulichen.

UPDATE Table_1, Table_2,
[INNER JOIN] Table_1 ON Table_1.Column_1 = Table_2. Column_1
SET Table_1.Column_2 = Table_2.Column_2, 
    Table_2.Column_3 = expression
WHERE condition

Die obige Syntax funktioniert wie folgt für eine bestimmte Tabelle in MySQL.

  • Wir beginnen unsere Arbeit, indem wir die Haupttabelle namens Table_1 und die Tabelle, die wir mit der Haupttabelle verbinden wollen, als Table_2 angeben. Die in der UPDATE-Klausel erwähnte Tabelle wird aktualisiert, und die Daten in der nach der UPDATE-Klausel nicht erwähnten Tabelle werden nicht geändert.
  • Sobald wir das getan haben, müssen wir die Art der Verknüpfung angeben, die wir verwenden möchten. In der obigen Syntax haben wir den INNER-Join verwendet. Dieser Join muss unmittelbar nach der UPDATE-Klausel kommen.
  • Nachdem wir Werte für die Spalten bereitgestellt haben, die wir aktualisieren möchten, erwähnen wir eine WHERE-Klausel, um eine bestimmte Bedingung für die Aktualisierung anzugeben.

Es gibt eine weitere Möglichkeit, diese Methode zu verwenden, die wie folgt veranschaulicht werden kann.

UPDATE Table_1, Table_2
SET Table_1.column_2 = Table_2.column_2,
      Table_2.column_3 = expr
WHERE Table_1.column_1 = Table_2.column_1 AND condition

Bevor wir beginnen, erstellen wir zwei Tabellen, mit denen wir arbeiten können. Wir werden diese Tabellen student_details und marks nennen. Diese Tabellen können mit dem folgenden Code erstellt werden.

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

CREATE TABLE student_details (
    stu_id INT(11) NOT NULL AUTO_INCREMENT,
    stu_name VARCHAR(255) NOT NULL,
    performance INT(11) DEFAULT NULL,
    total FLOAT DEFAULT NULL,
    PRIMARY KEY (emp_id),
    CONSTRAINT fk_performance FOREIGN KEY (performance)
        REFERENCES marks (performance)
);

INSERT INTO marks(performance,percentage)
VALUES(1,0),
      (2,0.01),
      (3,0.03),
      (4,0.05),
      (5,0.08);

INSERT INTO student_details(stu_name,performance,total)      
VALUES('Preet Sanghavi', 1, 50000),
      ('Joe Sand', 3, 65000),
      ('Su Greens', 4, 75000),
      ('Gray Dellop', 5, 125000),
      ('Neon Jonty', 3, 85000),
      ('Peter Foe', 2, 45000),
      ('Little Wayne', 3, 55000);

Um die Tabelle student_details zu visualisieren, verwenden wir den folgenden Code.

SELECT * FROM student_details;

Der obige Code würde die folgende Ausgabe ergeben.

stu_id   stu_name 		stu_performance total
1		Preet Sanghavi		1			50000
2		Joe Sand			3			65000
3		Su Greens			4			75000
4		Gray Dellop			5			125000
5		Neon Jonty			3			85000
6		Peter Foe			2			45000
7		Little Wayne		3			55000

In ähnlicher Weise können wir die Tabelle marks visualisieren.

SELECT * FROM marks;

Der obige Code würde die folgende Ausgabe ergeben.

performance    percentage 
1				0
2				0.01
3				0.03
4				0.05
5				0.08

Wie wir aus den obigen Codeblöcken sehen können, befindet sich der Prozentwert in der Tabelle marks, und wir müssen den UPDATE JOIN mit INNER JOIN als Haupt-Join verwenden, um die total jedes Schülers anzupassen die Tabelle student_details basierend auf den Werten von percentage und performance in der Tabelle marks.

Hinweis: Es ist wichtig zu beachten, dass die Brücke zwischen den beiden Tabellen student_details und marks die Spalte performance ist.

Lassen Sie uns nun die Anweisung UPDATE JOIN in Aktion sehen.

Verwenden der Anweisung UPDATE JOIN in MySQL

Wir können den Update-Vorgang wie oben beschrieben mit der folgenden Abfrage durchführen.

UPDATE student_details
        INNER JOIN
    marks ON student_details.performance = marks.performance 
SET 
    total = total + total * percentage;

Hier ist die Tabelle student_details die Haupttabelle, in der der Wert von total aktualisiert werden muss.

Hinweis: Da wir die WHERE-Klausel in der UPDATE-Anweisung in der oben erwähnten Abfrage loswerden, werden alle Datensätze in der student_details-Tabelle basierend auf der SET-Bedingung geändert.

Die Ausgabe der oben erwähnten Abfrage würde die folgenden Ergebnisse liefern.

stu_id   stu_name 		stu_performance total
1		Preet Sanghavi		1			50000
2		Joe Sand			3			66950
3		Su Greens			4			78750
4		Gray Dellop			5			135000
5		Neon Jonty			3			87550
6		Peter Foe			2			45450
7		Little Wayne		3			56650

Wie wir im obigen Codeblock sehen können, wird die total jedes Schülers basierend auf seiner/ihrer performance in der marks-Tabelle aktualisiert.

So können wir mit Hilfe der oben erwähnten Technik Update Join in MySQL effizient nutzen.

Preet Sanghavi avatar Preet Sanghavi avatar

Preet writes his thoughts about programming in a simplified manner to help others learn better. With thorough research, his articles offer descriptive and easy to understand solutions.

LinkedIn GitHub

Verwandter Artikel - MySQL Join

Verwandter Artikel - MySQL Update