UPDATE messages
SET s_deleted = IF(sender = :sender, 1, s_deleted),
r_deleted = IF(recipient = :recipient, 1, r_deleted)
WHERE id = :id
Như bạn có thể thấy, "thủ thuật" là chỉ cần đặt một cột về giá trị hiện tại của nó khi không đáp ứng tiêu chí, vì vậy nó chỉ được cập nhật khi cần thiết.