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.