UPDATE messages
SET s_deleted = IF(sender = :sender, 1, s_deleted),
r_deleted = IF(recipient = :recipient, 1, r_deleted)
WHERE id = :id
ご覧のとおり、「トリック」とは、基準が満たされていない場合に列を既存の値に設定するだけなので、必要な場合にのみ更新されます。
UPDATE messages
SET s_deleted = IF(sender = :sender, 1, s_deleted),
r_deleted = IF(recipient = :recipient, 1, r_deleted)
WHERE id = :id
ご覧のとおり、「トリック」とは、基準が満たされていない場合に列を既存の値に設定するだけなので、必要な場合にのみ更新されます。