Detailliertes Beispiel für MySQL-Joint-Tabellen-Update-Daten

Detailliertes Beispiel für MySQL-Joint-Tabellen-Update-Daten

1.MySQL UPDATE JOIN-Syntax

In MySQL können Sie die JOIN Klausel in einer UPDATE-Anweisung verwenden, um tabellenübergreifende Aktualisierungen durchzuführen. Die Syntax von MySQL UPDATE JOIN lautet wie folgt:

AKTUALISIERUNG T1, T2,
[INNER JOIN | LEFT JOIN] T1 AUF T1.C1 = T2.C1
SETZE T1.C2 = T2.C2, 
 T2.C3 = Ausdruck
WHERE-Bedingung

Betrachten wir die MySQL UPDATE JOIN -Syntax im Detail:

Geben Sie zunächst nach der UPDATE Klausel die Primärtabelle ( T1 ) und die Tabelle an, mit der die Primärtabelle verknüpft werden soll ( T2 ).

Geben Sie zweitens den zu verwendenden Verknüpfungstyp ( INNER JOIN oder LEFT JOIN ) und die Verknüpfungsbedingung an. Die JOIN -Klausel muss nach der UPDATE Klausel stehen.

Drittens müssen Sie den Spalten in T1 und/oder T2 -Tabellen, die Sie aktualisieren möchten, neue Werte zuweisen.

Viertens werden die Bedingungen in der WHERE-Klausel verwendet, um die zu aktualisierenden Zeilen anzugeben.

2. Beispiel

Zunächst verwenden wir in diesen Beispielen eine neue Beispieldatenbank ( empdb ). Die Beispieldatenbank enthält 2 Tabellen:

  • In der employees werden Daten zu Mitarbeiternummer, Name, Arbeitsleistung und Gehalt gespeichert.
  • In merits werden die Leistungen und Leistungsprozentsätze der Mitarbeiter gespeichert.

Die folgenden Anweisungen erstellen Tabellen und importieren Daten in die Beispieldatenbank empdb :

Datenbank erstellen, falls nicht vorhanden, empdb;

VERWENDEN Sie empdb;
--Tabellen erstellen
CREATE TABLE Vorteile (
 Leistung INT(11) NOT NULL,
 Prozentsatz FLOAT NOT NULL,
 PRIMÄRSCHLÜSSEL (Leistung)
);

CREATE TABLE Mitarbeiter (
 emp_id INT(11) NICHT NULL AUTO_INCREMENT,
 emp_name VARCHAR(255) NICHT NULL,
 Leistung INT(11) DEFAULT NULL,
 Gehalt FLOAT DEFAULT NULL,
 PRIMÄRSCHLÜSSEL (emp_id),
 CONSTRAINT fk_performance FOREIGN KEY (Leistung)
  REFERENZEN Verdienste (Leistung)
);

-- Daten für die Leistungstabelle einfügen
INSERT INTO merits(Leistung, Prozentsatz)
WERTE(1,0),
  (2,0,01),
  (3,0,03),
  (4,0,05),
  (5,0,08);

-- Daten für die Mitarbeitertabelle einfügen
INSERT INTO Mitarbeiter(Mitarbeitername, Leistung, Gehalt)  
WERTE('Mary Doe', 1, 50000),
  ('Cindy Minsu', 3, 65000),
  ('Sue Greenspan', 4, 75000),
  ('Grace Dell', 5, 125000),
  ('Nancy Johnson', 3, 85000),
  ('Max Mustermann', 2, 45000),
  ('Lily Bush', 3, 55000);

2.1 MySQL UPDATE JOIN Beispiel mit INNER JOIN Klausel

Angenommen, Sie möchten das Gehalt eines Mitarbeiters auf Grundlage seiner Arbeitsleistung anpassen.
Daher werden die Leistungsprozentsätze in der merits gespeichert und es muss UPDATE INNER JOIN -Anweisung verwendet werden, um die Gehälter employees in der Mitarbeitertabelle basierend auf den in merits gespeicherten Prozentsätzen anzupassen.
employees und merits sind über performance Leistungsfeld verknüpft. Siehe die folgende Abfrage:

Wie funktioniert die obige Abfrage?
Wir geben die employees erst nach UPDATE Klausel an, da wir nur Daten in der employees aktualisieren möchten.
Für jede Zeile in der employees vergleicht die Abfrage den Wert der Spalte performance in der employees mit dem Wert der Spalte performance in der merits . Wenn eine Übereinstimmung gefunden wird, wird der Prozentsatz aus der merits abgerufen und die salary in der employees aktualisiert.

mysql> select * from employees; -- Aktualisieren Sie die vorherigen Daten+--------+-----------+-------------+--------+
| emp_id | emp_name | Leistung | Gehalt |
+--------+--------------+-------------+--------+
| 1 | Maria Doe | 1 | 50000 |
| 2 | Cindy Minsu | 3 | 65000 |
| 3 | Sue Greenspan | 4 | 75000 |
| 4 | Grace Dell | 5 | 125000 |
| 5 | Nancy Johnson | 3 | 85000 |
| 6 | Max Mustermann | 2 | 45000 |
| 7 | Lilienbusch | 3 | 55000 |
+--------+--------------+-------------+--------+
7 Reihen im Set

mysql> UPDATE Mitarbeiter
  Innerer Join
 Verdienste EIN Mitarbeiter.Leistung = Verdienste.Leistung 
SATZ 
 Gehalt = Gehalt + Gehalt * Prozentsatz; -- Verbindungsaktualisierungsabfrage ausführen OK, 6 Zeilen betroffen
Übereinstimmende Zeilen: 7 Geändert: 6 Warnungen: 0

mysql> select * from employees; -- Aktualisierte Daten+--------+-----------+-------------+--------+
| emp_id | emp_name | Leistung | Gehalt |
+--------+--------------+-------------+--------+
| 1 | Maria Doe | 1 | 50000 |
| 2 | Cindy Minsu | 3 | 66950 |
| 3 | Sue Greenspan | 4 | 78750 |
| 4 | Grace Dell | 5 | 135000 |
| 5 | Nancy Johnson | 3 | 87550 |
| 6 | Max Mustermann | 2 | 45450 |
| 7 | Lilienbusch | 3 | 56650 |
+--------+--------------+-------------+--------+
7 Reihen im Set

Da die WHERE Klausel in der UPDATE Anweisung weggelassen wird, werden alle Datensätze in der employees aktualisiert. Wenn Sie das Gehalt von Mitarbeitern aktualisieren müssen, deren performance größer als 1 ist, kann sql wie folgt geschrieben werden:

UPDATE Mitarbeiter
  Innerer Join
 Verdienste EIN Mitarbeiter.Leistung = Verdienste.Leistung 
SATZ 
 Gehalt = Gehalt + Gehalt * Prozentsatz
WO Mitarbeiter.Leistung > 1;

2.2 MySQL UPDATE JOIN Beispiel mit LEFT JOIN

Angenommen, das Unternehmen hat zwei neue Mitarbeiter eingestellt:

INSERT INTO Mitarbeiter(Mitarbeitername, Leistung, Gehalt)
WERTE('Jack William',NULL,43000),
  ('Ricky Bond', NULL, 52000);

Da es sich bei diesen Mitarbeitern um Neueinstellungen handelt, sind ihre performance entweder nicht verfügbar oder NULL . Jetzt
Die Daten in der employees lauten wie folgt:

mysql> SELECT * FROM Mitarbeiter;
+--------+--------------+-------------+--------+
| emp_id | emp_name | Leistung | Gehalt |
+--------+--------------+-------------+--------+
| 1 | Maria Doe | 1 | 50000 |
| 2 | Cindy Minsu | 3 | 66950 |
| 3 | Sue Greenspan | 4 | 78750 |
| 4 | Grace Dell | 5 | 135000 |
| 5 | Nancy Johnson | 3 | 87550 |
| 6 | Max Mustermann | 2 | 45450 |
| 7 | Lilienbusch | 3 | 56650 |
| 8 | Jack William | NULL | 43000 |
| 9 | Ricky Bond | NULL | 52000 |
+--------+--------------+-------------+--------+
9 Reihen im Set

Zum Berechnen des Gehalts neuer Mitarbeiter können Sie die Anweisung UPDATE INNER JOIN nicht verwenden (Informationen dazu finden Sie in den Unterschieden zwischen Left Join, Right Join und Inner Join in SQL), da deren Leistungsdaten in der merits nicht verfügbar sind. Aus diesem Grund wird zur Implementierung UPDATE LEFT JOIN verwendet.
Wenn UPDATE LEFT JOIN -Anweisung eine Zeile in einer Tabelle aktualisiert, obwohl in der anderen Tabelle keine entsprechende Zeile vorhanden ist.
So können Sie beispielsweise das Gehalt eines neuen Mitarbeiters mit der folgenden Anweisung um 1,5 % erhöhen:

UPDATE Mitarbeiter
  LINKS VERBINDEN
 Verdienste EIN Mitarbeiter.Leistung = Verdienste.Leistung 
SATZ 
 Gehalt = Gehalt + Gehalt * 0,015
WO
 merits.percentage IST NULL;

Die Ausführungsergebnisse sind wie folgt:

mysql> UPDATE Mitarbeiter
  LINKS VERBINDEN
 Verdienste EIN Mitarbeiter.Leistung = Verdienste.Leistung 
SATZ 
 Gehalt = Gehalt + Gehalt * 0,015
WO
 merits.percentage IST NULL;
Abfrage OK, 2 Zeilen betroffen
Übereinstimmende Zeilen: 2 Geändert: 2 Warnungen: 0

mysql> wähle * aus Mitarbeitern;
+--------+--------------+-------------+--------+
| emp_id | emp_name | Leistung | Gehalt |
+--------+--------------+-------------+--------+
| 1 | Maria Doe | 1 | 50000 |
| 2 | Cindy Minsu | 3 | 66950 |
| 3 | Sue Greenspan | 4 | 78750 |
| 4 | Grace Dell | 5 | 135000 |
| 5 | Nancy Johnson | 3 | 87550 |
| 6 | Max Mustermann | 2 | 45450 |
| 7 | Lilienbusch | 3 | 56650 |
| 8 | Jack William | NULL | 43645 |
| 9 | Ricky Bond | NULL | 52780 |
+--------+--------------+-------------+--------+
9 Reihen im Set

Beispiel

# Einzelne Tabellenverknüpfung
Aktualisiere bbs_uhome_card_activate ca INNER JOIN bbs_uhome_card_rules cr auf ca.card_brach=cr.card_bach, setze ca.create_user=cr.create_user;

# Verknüpfung mehrerer Tabellen
UPDATE bbs_uhome_card_order co INNER JOIN bbs_uhome_card_order_record cor on co.order_no=cor.order_no JOIN bbs_uhome_card_activate ca on cor.card_no=ca.card_no set co.create_user=ca.create_user

Dies ist das Ende dieses Artikels über das ausführliche Beispiel für MySQL-Joint-Table-Update-Daten. Weitere relevante MySQL-Joint-Table-Update-Daten finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Nicht standardmäßiger Implementierungscode für die MySQL UPDATE-Anweisung
  • MySQL-Update-Fall Update-Feldwert ist keine feste Operation
  • Beim Ändern eines Datensatzes in MySQL lautet die Aktualisierungsoperation Feld = Feld + Zeichenfolge
  • MySQL-Beispiel-Tutorial: Ergebnisse auswählen, um ein Update durchzuführen
  • Wird die Tabelle durch ein Update in einer MySQL-Transaktion gesperrt?
  • Detaillierte Analyse der Syntax von Mysql-Updates zum Ändern mehrerer Felder und
  • Notieren Sie eine Falle bei der Aktualisierung der MySQL-Update-Anweisung
  • Detaillierte Erläuterung des Ausführungsprozesses der MySQL-Update-Anweisung
  • Zusammenfassung der gemeinsamen Updatemethode für MySQL-Updates mehrerer Tabellen
  • Unterschied zwischen MySQL-Update-Set und und

<<:  Grafisches IDEA-Tutorial zum Konfigurieren des Tomcat-Servers und Veröffentlichen von Webprojekten

>>:  JavaScript zum Erreichen eines dynamischen Farbwechsels der Tabelle

Artikel empfehlen

Upgrade des Windows Server 2008R2-Dateiservers auf Windows Server 2016

Die Benutzerorganisation verfügt über zwei Window...

Verwenden Sie Docker, um ein verteiltes lnmp-Image zu erstellen

Inhaltsverzeichnis 1. Verteilte LNMP-Image-Produk...

CSS realisiert den Maskeneffekt, wenn die Maus über das Bild bewegt wird

1. Setzen Sie den HTML-Code der Maskenebene und d...

Detailliertes Tutorial zur Installation von Mysql5.7.19 auf Centos7 unter Linux

1. MySQL herunterladen URL: https://dev.mysql.com...

Zusammenfassung der Linux-Befehlsmethoden zum Anzeigen verwendeter Befehle

Im System werden viele Befehle verwendet. Wie kön...

HTML-Tutorial: Titelattribut und Alt-Attribut

XHTML ist die Grundlage des CSS-Layouts. jb51.net...

MySQL-Optimierung: Cache-Optimierung

Ich freue mich, dass einige Blogger meinen Artike...

Detaillierter Prozess zum Dekomprimieren und Installieren von mysql5.7.17 zip

1. Adresse herunterladen https://dev.mysql.com/do...

Reagieren Sie auf den nativen ScrollView-Pulldown-Aktualisierungseffekt

In diesem Artikel wird der spezifische Code des P...

20 JS-Abkürzungsfähigkeiten zur Verbesserung der Arbeitseffizienz

Inhaltsverzeichnis Wenn Sie mehrere Variablen gle...

Eine kurze Erläuterung zum eleganten Löschen großer Tabellen in MySQL

Inhaltsverzeichnis 1. Truncate-Operation 1.1 Welc...