Hast du nicht vergessen, ein "ELSE" in die case-Anweisung zu setzen?
UPDATE my_table
SET field = CASE
WHEN id IN (/* true ids */) THEN TRUE
WHEN id IN (/* false ids */) THEN FALSE
ELSE field=field
END
Ohne ELSE gehe ich davon aus, dass die Bewertungskette beim letzten WHEN stoppt und diese Aktualisierung ausführt. Außerdem begrenzen Sie nicht die Zeilen, die Sie aktualisieren möchten; Wenn Sie ELSE nicht ausführen, sollten Sie das Update zumindest anweisen, nur die gewünschten Zeilen und nicht alle Zeilen zu aktualisieren (wie Sie es tun). Sehen Sie sich die WHERE-Klausel unten an:
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)