Aktualisieren die Tabelle aus einer anderen Tabelle in MySQL

Preet Sanghavi 29 März 2022
Aktualisieren die Tabelle aus einer anderen Tabelle in MySQL

In diesem Tutorial möchten wir untersuchen, wie Werte einer Tabelle basierend auf Einträgen einer anderen Tabelle in MySQL aktualisiert werden.

Oft ist es für Unternehmen und Organisationen erforderlich, die Werte einer bestimmten Tabelle ständig zu aktualisieren. Darüber hinaus müssen diese Werte möglicherweise basierend auf den Einträgen in einer anderen Tabelle aktualisiert werden. Diese andere Tabelle kann basierend auf einer oder mehreren Spalten mit der zu aktualisierenden Tabelle verknüpft werden.

Angenommen, wir haben zwei Tabellen. Einer ist student_details und der andere ist student_ids. Beide Tabellen haben eine gemeinsame Spalte namens stu_firstName. Wir möchten die Tabelle student_ids mit der Identitätsnummer der Studenten aktualisieren, indem wir übereinstimmende Informationen aus der Tabelle student_details verwenden. Dies kann mit Hilfe einer UPDATE JOIN-Klausel erfolgen.

Lassen Sie uns verstehen, wie diese Methode funktioniert.

Bevor wir jedoch beginnen, erstellen wir einen Dummy-Datensatz, mit dem wir arbeiten können. Hier erstellen wir eine Tabelle, student_details, zusammen mit ein paar Zeilen darin.

-- create the table student_details
CREATE TABLE student_details(
  stu_id int,
  stu_firstName varchar(255) DEFAULT NULL,
  stu_lastName varchar(255) DEFAULT NULL,
  primary key(stu_id)
);
-- insert rows to the table student_details
INSERT INTO student_details(stu_id,stu_firstName,stu_lastName) 
 VALUES(1,"Preet","Sanghavi"),
 (2,"Rich","John"),
 (3,"Veron","Brow"),
 (4,"Geo","Jos"),
 (5,"Hash","Shah"),
 (6,"Sachin","Parker"),
 (7,"David","Miller");

Die obige Abfrage erstellt eine Tabelle zusammen mit Zeilen mit dem Vornamen und dem Nachnamen des Schülers darin. Um die Einträge in den Daten zu sehen, verwenden wir folgenden Code:

SELECT * FROM student_details;

Der obige Code würde die folgende Ausgabe ergeben:

stu_id	stu_firstName	stu_lastName
1	      Preet	        Sanghavi
2	      Rich	        John
3	      Veron	        Brow
4	      Geo	        Jos
5	      Hash	        Shah
6	      Sachin	    Parker
7	      David	        Miller

Lassen Sie uns versuchen, eine weitere Tabelle namens student_ids mit den Spalten stu_id und stu_firstName zu erstellen, die die Identitätsnummer und Namen der Studenten angeben. Wir können dies mit der folgenden Abfrage tun.

CREATE TABLE student_id(
  stu_id int,
  stu_firstName varchar(255) DEFAULT NULL
);

INSERT INTO student_id(stu_id, stu_firstName) 
 VALUES(1,"Preet"),
 (1,"Rich"),
 (1,"Veron"),
 (5,"Geo"),
 (5,"Hash"),
 (5,"Sachin"),
 (5,"David");

Wir können diese Tabelle wie folgt darstellen.

select * from student_id;

Die Ausgabe des oben genannten Codes kann wie folgt dargestellt werden.

stu_id	stu_firstName
1		Preet
1		Rich
1		Veron
5		Geo
5		Hash
5		Sachin
5		David

Lassen Sie uns nun versuchen, die Tabelle student_id mithilfe der Tabelle student_details zu aktualisieren.

UPDATE JOIN in MySQL

Die grundlegende Syntax der UPDATE JOIN-Technik lässt sich wie folgt veranschaulichen.

UPDATE table_2
INNER JOIN table_1 ON table_2.name = table_1.name
SET table_2.value = IF(table_1.value > 0, table_1.value, table_1.value)

Wie wir sehen können, aktualisieren wir in der oben genannten Abfrage den Wert von Wert in table_2 basierend auf dem Wert von Wert in Tabelle_1. Wir können dies mit der folgenden Abfrage tun.

UPDATE student_id
INNER JOIN student_details ON student_id.stu_firstName = student_details.stu_firstName
SET student_id.stu_id = student_details.stu_id;

Der oben genannte Code aktualisiert die Werte der Spalte stu_id der Tabelle student_id. Die Ausgabe des oben genannten Codes kann wie folgt dargestellt werden.

stu_id	stu_firstName
1		Preet
2		Rich
3		Veron
4		Geo
5		Hash
6		Sachin
7		David

Wie wir sehen können, wird der Spaltenname stu_id basierend auf den Werten der Tabelle student_details aktualisiert. Dieser Join wird unter Verwendung des gemeinsamen Tabellennamens stu_firstName durchgeführt. Diese stu_firstName-Werte werden für beide Spalten abgeglichen und der entsprechende Wert der Spalte stu_id aus der Tabelle student_details wird in der Tabelle student_id widergespiegelt.

Eine Alternative zu dieser Lösung wäre, auf die Verwendung von INNER JOIN zu verzichten und direkt einen Join mit Hilfe der WHERE ON-Klausel durchzuführen. Die oben erwähnte Operation kann mit dieser Technik wie folgt durchgeführt werden.

UPDATE student_id
SET student_id.stu_id = (
	SELECT student_details.stu_id 
    from student_details
    WHERE student_details.stu_firstName = student_id.stu_firstName
);

Wie wir hier sehen können, kann die Ausgabe des oben genannten Codes erneut mit dem Befehl SELECT * from student_id veranschaulicht werden, um die folgenden Ergebnisse zu erhalten.

stu_id	stu_firstName
1		Preet
2		Rich
3		Veron
4		Geo
5		Hash
6		Sachin
7		David

Daher können wir mit Hilfe der UPDATE JOIN-Technik eine Spalte einer Tabelle basierend auf Werten aus einer anderen Tabelle in MySQL effizient aktualisieren.

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 Query