Heim >Datenbank >MySQL-Tutorial >Wie kann ich MySQL-Einträge mithilfe der CASE-Anweisung effizient mit neuen Werten aktualisieren?
Aktualisieren von MySQL-Einträgen mit CASE für neue Werte
Dieser Artikel befasst sich mit der Herausforderung der Massenaktualisierung von Listenpreisen basierend auf der ID in einer MySQL-Datenbank . Ein häufiges Problem bei diesem Versuch ist die Verwendung der CASE-Anweisung, die bei unsachgemäßer Verwendung zu unerwarteten Ergebnissen führen kann.
Die in der Frage bereitgestellte Abfrage enthält einen grundlegenden Fehler. Es verwendet die CASE-Anweisung, um die Preisspalte festzulegen, gibt den Wert für Datensätze mit IDs, die nicht in den WHEN-Klauseln enthalten sind, jedoch nicht explizit an. Folglich werden diese Datensätze mit NULL-Werten aktualisiert.
Um dieses Problem zu beheben, sollte die korrekte Abfragestruktur wie folgt aussehen:
UPDATE ae44 SET price = CASE WHEN ID = 'AT259793380' THEN '500' WHEN ID = 'AT271729590' THEN '600' WHEN ID = 'AT275981020' THEN '700' END
Diese Abfrage hat jedoch immer noch einen Nachteil: Sie wird es tun Datensätze mit IDs, die nicht in den WHEN-Klauseln aufgeführt sind, mit NULL-Werten aktualisieren. Um die Aktualisierung nur auf die angegebenen IDs zu beschränken, ist ein selektiverer Ansatz erforderlich:
UPDATE ae44 JOIN ( SELECT 'AT259793380' AS oldval, '500' AS newval UNION ALL SELECT 'AT271729590' AS oldval, '600' AS newval UNION ALL SELECT 'AT275981020' AS oldval, '700' AS newval ) q ON ae44.id = q.oldval SET price = q.newval
Diese Abfrage verwendet eine Unterabfrage, um eine temporäre Tabelle mit den angegebenen alten und neuen Werten zu erstellen. Anschließend wird ein JOIN verwendet, um die Datensätze in der ae44-Tabelle anhand der ID mit denen in der Unterabfrage abzugleichen. Nur bei Datensätzen mit übereinstimmenden IDs werden die Preise auf den entsprechenden neuen Wert aktualisiert, während alle anderen Datensätze unverändert bleiben.
Das obige ist der detaillierte Inhalt vonWie kann ich MySQL-Einträge mithilfe der CASE-Anweisung effizient mit neuen Werten aktualisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!