I found this question, seems like same as mine. However, there’s a little difference between the two as that one is using the same column in where clause and I have a different one.
This is what I’m trying to achieve;
UPDATE table SET recent = 0 WHERE recent = 1 //update all `recent` column where its value is `1`. AND SET recent = 1 WHERE ID = 555 //update specific `recent` column where its ID is `555`.
is it possible to do that in one query?
EDIT: The data type of recent is Boolean, and there should be only one that is set to be TRUE. So I want to set it all back to FALSE to make sure none of them will be true then update the row with ID of 555 to TRUE making it the only one TRUE.
Advertisement
Answer
You could use a case expression:
UPDATE mytable
SET recent = CASE WHEN recent = 1 THEN 0
WHEN id = 555 THEN 1
END
WHERE recent = 1 OR id = 555