Update Fall, Wenn mit mehreren Bedingungen
Ich habe diese Tabelle:
CREATE TABLE IF NOT EXISTS `my_table` (
`A` int(11) NOT NULL,
`B` int(11) NOT NULL,
`C` varchar(50) NOT NULL,
`D` varchar(30) NOT NULL,
PRIMARY KEY (`A`,`B`,`C`)
)
Ich aktualisieren möchten Sie mehrere Einträge in nur einer Abfrage. Ich versuchte dies:
UPDATE my_table
SET D = CASE
WHEN (A = 6 AND B = 1 AND C = 'red') THEN '1#2#3#5#4'
WHEN (A = 8 AND B = 1 AND C = 'green') THEN '5#6#7#8#9'
END
Aber diese Abfrage aktualisiert alle Einträge in der Tabelle. Es aktualisiert sich perfekt der Wert von 'D' der beiden Einträge, die ich möchte zu aktualisieren, aber es löscht auch die Werte von "D" von der anderen Einträge, und ich möchte, dass Sie bleiben mit Ihren bisherigen Werten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie nicht explizit hinzufügen eines
else
- Klausel, um einecase
Ausdruck, implizit wirkt, als sei Sie Hinzugefügt habenelse null
zu. Also, deine update-Anweisung ist effektiv äquivalent zu:Was erklärt, warum sehen Sie
D
wird "gelöscht".Ein Weg, um es explizit hinzufügen eines
else
- Klausel, gibt einfachD
:Andere Möglichkeit, die ist ein bisschen "clunkier" in der syntax, aber ausführen kann, etwas besser, ist eine
where
- Klausel, damit nur die relevanten Zeilen aktualisiert:WHERE
Zustand sieht unnötig.