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
Freigeben: 2024-11-16 09:35:03
Original
394 Leute haben es durchsucht

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage