Hier ist meine Frage:Wie kann ich mehrere Bedingungen in CASE-Anweisung schreiben?
UPDATE mytable
SET mycol = mycol +
(CASE id
WHEN ? THEN 5
WHEN ? THEN 10
WHEN ? THEN 15
WHEN ? THEN 20
END)
WHERE id IN (?, ?, ?, ?)
Nun, ich brauche für alle diese Bedingungen eine weitere Bedingung zu untersuchen. Also schreibe ich meine Anfrage so:
UPDATE mytable
SET mycol = mycol +
(CASE
WHEN id = ? AND $bool THEN 5
WHEN id = ? AND $bool THEN 10
WHEN id = ? AND $bool THEN 15
WHEN id = ? AND $bool THEN 20
END)
WHERE id IN (?, ?, ?, ?)
Diese^Abfrage funktioniert. Aber wie Sie sehen, habe ich eine konstante Bedingung geschrieben ($bool
- das ist eine PHP-Variable, die 1
oder 0
enthält) mehrmals. Jetzt suche ich nach einer MySQL-Syntax, damit ich für alle Fälle einmal $bool
schreiben kann. Ist das möglich?
Was ist, wenn '$ bool' falsch ist? Welchen Wert soll der CASE-Ausdruck zurückgeben? –
@GiorgosBetsos Wenn '$ bool' * false * ist, sollte' CASE' Ausdruck nichts zurückgeben ('0'). – stack