Heim >Datenbank >MySQL-Tutorial >MySQL-UPDATE mit CASE: Warum werden alle Zeilen aktualisiert und wie lässt sich das Problem beheben?
MySQL-Update mit CASE: Unerwartetes Verhalten und unerwartete Lösung
Bei der Verwendung der CASE-Anweisung in MySQL UPDATE-Abfragen ist es wichtig, deren Auswirkungen zu verstehen Daten. Im bereitgestellten Beispiel zielte die ursprüngliche Abfrage darauf ab, bestimmte Zeilen basierend auf ihrem ID-Feld zu aktualisieren. Die Abfrage hat jedoch unerwartet alle 25 Millionen Zeilen aktualisiert und NULL-Werte eingeführt.
Dieses Verhalten ist auf die Art der CASE-Anweisung zurückzuführen. Ohne eine ELSE-Klausel interpretiert MySQL alle fehlenden Bedingungen als gleich NULL. Daher wurden alle Zeilen, die nicht mit den angegebenen ID-Werten übereinstimmten, mit NULL für die UID-Spalte aktualisiert.
Um dieses Problem zu beheben und bestimmte Zeilen selektiv zu aktualisieren und gleichzeitig andere Daten beizubehalten, sollten Sie die Verwendung einer ELSE-Klausel zur Bereitstellung eines Standardwerts in Betracht ziehen Wert ändern oder den vorhandenen Wert beibehalten. Geben Sie außerdem mithilfe der WHERE-Klausel die Zeilen an, die aktualisiert werden müssen.
Die folgende geänderte Abfrage geht beispielsweise auf diese Probleme ein:
UPDATE `table` SET `uid` = CASE WHEN id = 1 THEN 2952 WHEN id = 2 THEN 4925 WHEN id = 3 THEN 1592 ELSE `uid` END WHERE id in (1,2,3)
Diese Abfrage aktualisiert jetzt nur Zeilen mit ID-Werten von 1, 2 und 3, wobei die übrigen Zeilen unberührt bleiben. Durch die Kombination der CASE-Anweisung mit der ELSE-Klausel und der WHERE-Klausel können Sie bestimmte Zeilen effizient aktualisieren, ohne versehentlich andere Daten in der Tabelle zu ändern.
Das obige ist der detaillierte Inhalt vonMySQL-UPDATE mit CASE: Warum werden alle Zeilen aktualisiert und wie lässt sich das Problem beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!