UPDATE messages
SET s_deleted = IF(sender = :sender, 1, s_deleted),
r_deleted = IF(recipient = :recipient, 1, r_deleted)
WHERE id = :id
Jak widać, „sztuczka” polega po prostu na ustawieniu kolumny na istniejącą wartość, gdy kryteria nie są spełnione, więc jest aktualizowana tylko wtedy, gdy jest to konieczne.