Bedingte UPDATES für INSERT ... ON DUPLICATE KEY
Das Einfügen oder Aktualisieren von Datensätzen basierend auf doppelten Schlüsselbedingungen ist ein häufiges Szenario in der Datenbankprogrammierung . Allerdings kann es manchmal erforderlich sein, die Update-Bedingung weiter einzuschränken, sodass sie von zusätzlichen Kriterien abhängig ist. Leider unterstützt die INSERT ... ON DUPLICATE KEY UPDATE-Syntax WHERE-Klauseln für bedingte Aktualisierungen nicht nativ.
Überwindung der Einschränkung
Um diese Einschränkung zu umgehen, müssen Sie kann die Funktion IF() innerhalb der UPDATE-Klausel verwenden. Mit der Funktion IF() können Sie einen alternativen Wert basierend auf einem bestimmten logischen Ausdruck angeben.
Beispielimplementierung
Bedenken Sie Folgendes: INSERT ... ON DUPLICATE KEY UPDATE Abfrage:
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 dieser Abfrage enthält die UPDATE-Klausel eine IF()-Anweisung, die prüft, ob der vorhandene last_event_created_at-Wert kleiner als der eingefügte Wert ist. Wenn der vorhandene Wert älter ist, wird die Aktualisierung durchgeführt und die last_event_id durch den neuen Wert ersetzt. Andernfalls bleibt die vorhandene last_event_id erhalten.
Zusätzliche Überlegungen
Das obige ist der detaillierte Inhalt vonWie implementiert man bedingte Aktualisierungen mit INSERT ... ON DUPLICATE KEY in SQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!