UPDATE messages
SET s_deleted = IF(sender = :sender, 1, s_deleted),
r_deleted = IF(recipient = :recipient, 1, r_deleted)
WHERE id = :id
Wie Sie sehen können, besteht der "Trick" darin, eine Spalte einfach auf ihren vorhandenen Wert zu setzen, wenn die Kriterien nicht erfüllt sind, sodass sie nur aktualisiert wird, wenn es nötig ist.