UPDATE messages
SET s_deleted = IF(sender = :sender, 1, s_deleted),
r_deleted = IF(recipient = :recipient, 1, r_deleted)
WHERE id = :id
Comme vous pouvez le voir, "l'astuce" consiste simplement à définir une colonne sur sa valeur existante lorsque les critères ne sont pas remplis, afin qu'elle ne soit mise à jour que lorsque cela est nécessaire.