क्या आप केस स्टेटमेंट में "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
ईएलएसई के बिना, मुझे लगता है कि मूल्यांकन श्रृंखला आखिरी WHEN पर रुक जाती है और उस अपडेट को निष्पादित करती है। साथ ही, आप उन पंक्तियों को सीमित नहीं कर रहे हैं जिन्हें आप अद्यतन करने का प्रयास कर रहे हैं; यदि आप ईएलएसई नहीं करते हैं तो आपको कम से कम अपडेट को केवल अपनी इच्छित पंक्तियों को अपडेट करने के लिए बताना चाहिए, न कि सभी पंक्तियों को (जैसा कि आप कर रहे हैं)। नीचे 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)