Nezapomněli jste ve výpisu případu napsat „ELSE“?
UPDATE my_table
SET field = CASE
WHEN id IN (/* true ids */) THEN TRUE
WHEN id IN (/* false ids */) THEN FALSE
ELSE field=field
END
Bez ELSE předpokládám, že se hodnotící řetězec zastaví na posledním KDYŽ a provede aktualizaci. Také neomezujete řádky, které se pokoušíte aktualizovat; pokud neuděláte ELSE, měli byste alespoň říct aktualizaci, aby aktualizovala pouze řádky, které chcete, a ne všechny řádky (jak to děláte). Podívejte se na klauzuli WHERE níže:
UPDATE my_table
SET field = CASE
WHEN id IN (/* true ids */) THEN TRUE
WHEN id IN (/* false ids */) THEN FALSE
END
WHERE id in (true ids + false_ids)