Heim >Datenbank >MySQL-Tutorial >Wie implementiert man bedingte Aktualisierungen in MySQLs INSERT ... ON DUPLICATE KEY UPDATE?

Wie implementiert man bedingte Aktualisierungen in MySQLs INSERT ... ON DUPLICATE KEY UPDATE?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-31 06:42:30696Durchsuche

How to Implement Conditional Updates in MySQL's INSERT ... ON DUPLICATE KEY UPDATE?

Bedingtes UPDATE in INSERT ... ON DUPLICATE KEY Update

In MySQL ermöglicht Ihnen die Anweisung INSERT ... ON DUPLICATE KEY UPDATE um eine neue Zeile einzufügen oder eine vorhandene Zeile zu aktualisieren, wenn die Zeile mit demselben eindeutigen Schlüssel bereits vorhanden ist. Manchmal kann es jedoch erforderlich sein, dass der Aktualisierungsteil bedingt ist und nur ausgeführt wird, wenn eine bestimmte Bedingung erfüllt ist.

Leider wird die WHERE-Klausel in der ON DUPLICATE KEY UPDATE-Syntax nicht unterstützt. Um diese Einschränkung zu überwinden, können Sie die IF()-Funktion innerhalb der UPDATE-Klausel verwenden.

Die IF()-Funktion benötigt drei Argumente: eine Bedingung, einen Wert, der zurückgegeben wird, wenn die Bedingung wahr ist, und einen Wert für Gibt zurück, wenn die Bedingung falsch ist. Dadurch können Sie eine Bedingung angeben, die prüft, ob sich die zusätzliche Bedingung geändert hat, und dann den zu aktualisierenden Wert bedingt festlegen.

Betrachten Sie beispielsweise die folgende Anweisung:

INSERT INTO daily_events (created_on, last_event_id, last_event_created_at)
VALUES ('2010-01-19', 23, '2010-01-19 10:23:11')
ON DUPLICATE KEY UPDATE
  last_event_id = IF(last_event_created_at < VALUES(last_event_created_at), VALUES(last_event_id), last_event_id);

In Mit dieser Anweisung wird die Spalte „last_event_id“ nur aktualisiert, wenn die Spalte „last_event_created_at“ der vorhandenen Zeile vor dem Wert in der VALUES-Klausel liegt. Andernfalls bleibt die last_event_id unverändert.

Das obige ist der detaillierte Inhalt vonWie implementiert man bedingte Aktualisierungen in MySQLs INSERT ... ON DUPLICATE KEY UPDATE?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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