Heim > Datenbank > MySQL-Tutorial > Wie führe ich bedingte Einfügungen in MySQL durch?

Wie führe ich bedingte Einfügungen in MySQL durch?

Mary-Kate Olsen
Freigeben: 2024-12-26 20:41:10
Original
523 Leute haben es durchsucht

How to Perform Conditional Inserts in MySQL?

Bedingte Einfügungen in MySQL erreichen

Bedingte Einfügungen können in MySQL eine Herausforderung darstellen, da es keine spezifischen Schlüsselwörter für diesen Zweck gibt. Daher müssen alternative Ansätze verwendet werden.

Ansatz mithilfe einer Unterabfrage:

Eine effektive Lösung besteht darin, eine Unterabfrage zu verwenden, um nach vorhandenen Zeilen mit übereinstimmenden Kriterien zu suchen. Die folgende Abfrage fügt nur dann eine neue Zeile in die x_table ein, wenn keine Zeile mit denselben Benutzer- und Elementwerten vorhanden ist:

INSERT INTO x_table(instance, user, item)
SELECT 919191, 123, 456
FROM dual
WHERE NOT EXISTS (SELECT * FROM x_table WHERE user = 123 AND item = 456);
Nach dem Login kopieren

Die Unterabfrage stellt sicher, dass die INSERT-Anweisung nur ausgeführt wird, wenn die Bedingung erfüllt ist. dual ist eine einzeilige Tabelle, die eine praktische Quelle für die SELECT-Anweisung bietet.

Alternativer Ansatz mit MERGE:

Eine weitere Option für bedingte Einfügungen ist die Verwendung von MERGE Stellungnahme. Die MERGE-Anweisung ermöglicht sowohl das Einfügen als auch das Aktualisieren in einem einzigen Vorgang. Die folgende Abfrage fügt eine neue Zeile in die x_table ein, wenn diese noch nicht vorhanden ist. Andernfalls wird die vorhandene Zeile aktualisiert:

MERGE INTO x_table AS target
USING (
  SELECT 919191 AS instance, 123 AS user, 456 AS item
) AS source
ON target.user = source.user AND target.item = source.item
WHEN NOT MATCHED THEN INSERT (instance, user, item) VALUES (source.instance, source.user, source.item)
WHEN MATCHED THEN UPDATE SET instance = source.instance;
Nach dem Login kopieren

Bei diesem Ansatz prüft die MERGE-Anweisung zunächst, ob eine vorhandene Zeile mit Übereinstimmung vorhanden ist Benutzer- und Artikelwerte. Wenn keine Übereinstimmung gefunden wird, wird eine neue Zeile mit den Daten aus der Quellunterabfrage eingefügt. Wenn eine Übereinstimmung gefunden wird, wird der Instanzwert aktualisiert.

Das obige ist der detaillierte Inhalt vonWie führe ich bedingte Einfügungen in MySQL durch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage