ケースステートメントで「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
ELSEがない場合、評価チェーンは最後のWHENで停止し、その更新を実行すると想定します。また、更新しようとしている行を制限しているわけではありません。 ELSEを実行しない場合は、少なくとも、すべての行ではなく、必要な行のみを更新するように更新を指示する必要があります(実行しているように)。以下のWHERE句を見てください:
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)