Har du inte glömt att göra ett "ANNARS" i ärendet?
UPDATE my_table
SET field = CASE
WHEN id IN (/* true ids */) THEN TRUE
WHEN id IN (/* false ids */) THEN FALSE
ELSE field=field
END
Utan ELSE antar jag att utvärderingskedjan stannar vid den sista NÄR och kör den uppdateringen. Dessutom begränsar du inte raderna som du försöker uppdatera; om du inte gör det ANNAT bör du åtminstone berätta för uppdateringen att bara uppdatera de rader du vill ha och inte alla rader (som du gör). Titta på WHERE-satsen nedan:
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)