Heim >Datenbank >MySQL-Tutorial >Wie aktualisiere ich MySQL-Einträge massenhaft mit bedingten Werten mithilfe von CASE?

Wie aktualisiere ich MySQL-Einträge massenhaft mit bedingten Werten mithilfe von CASE?

Susan Sarandon
Susan SarandonOriginal
2024-11-16 09:35:03383Durchsuche

How to Mass Update MySQL Entries with Conditional Values Using CASE?

Massenaktualisierung von MySQL-Einträgen mit bedingten Werten mithilfe von CASE

In MySQL können Sie Tabelleneinträge basierend auf bestimmten Bedingungen mithilfe der CASE-Anweisung aktualisieren. So geht's:

Problem: Übereinstimmende IDs für die Preisaktualisierung

Sie haben die folgende Abfrage:

update ae44
set Price = Case
when ID = 'AT259793380' then '500'
when ID = 'AT271729590' then '600'
when ID = 'AT275981020' then '700'
end case

Ihr Ziel ist es, die Angebotspreise basierend auf massenhaft zu aktualisieren entsprechenden IDs. Die Abfrage liefert jedoch nicht die beabsichtigten Ergebnisse.

Lösung: CASE für bedingte Aktualisierung verwenden

Um die Abfrage zu beheben, müssen Sie die CASE-Anweisung ordnungsgemäß verwenden. Hier ist die korrekte Syntax:

UPDATE  ae44
SET     price =
        CASE
        WHEN ID = 'AT259793380' THEN
                '500'
        WHEN ID = 'AT271729590' THEN
                '600'
        WHEN ID = 'AT275981020' THEN
                '700'
        END

Beachten Sie, dass diese Abfrage die Preise für Datensätze mit anderen IDs auf NULL aktualisiert.

Alternative Lösung: Nullaktualisierungen ausschließen

Wenn Sie möchten Um nur die IDs aus Ihrer Liste zu aktualisieren und Nullaktualisierungen auszuschließen, können Sie die folgende Abfrage verwenden:

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 wird nur aktualisiert die Preise für die IDs, die in der temporären Tabelle angegeben sind, die mit der UNION ALL-Anweisung erstellt wurde.

Das obige ist der detaillierte Inhalt vonWie aktualisiere ich MySQL-Einträge massenhaft mit bedingten Werten mithilfe von CASE?. 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