UPDATE messages
SET s_deleted = IF(sender = :sender, 1, s_deleted),
r_deleted = IF(recipient = :recipient, 1, r_deleted)
WHERE id = :id
Come puoi vedere, il "trucco" consiste semplicemente nell'impostare una colonna sul valore esistente quando i criteri non sono soddisfatti, quindi viene aggiornata solo quando necessario.