Apakah Anda tidak lupa untuk melakukan "ELSE" dalam pernyataan kasus?
UPDATE my_table
SET field = CASE
WHEN id IN (/* true ids */) THEN TRUE
WHEN id IN (/* false ids */) THEN FALSE
ELSE field=field
END
Tanpa LAINNYA, saya menganggap rantai evaluasi berhenti pada KAPAN terakhir dan menjalankan pembaruan itu. Juga, Anda tidak membatasi baris yang Anda coba perbarui; jika Anda tidak melakukan LAINNYA, Anda setidaknya harus memberi tahu pembaruan untuk hanya memperbarui baris yang Anda inginkan dan tidak semua baris (seperti yang Anda lakukan). Lihat klausa WHERE di bawah ini:
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)