はい、可能ですが、注意が必要です。
UPDATE `messages`
SET `from_delete` = IF(`from_user_id` = '6',NOW(),`from_delete`)
, `to_delete` = IF(`to_user_id` = '6',NOW(),`to_delete` )
WHERE (`thread_hash` = 'abc' AND `from_user_id` = '6')
OR (`thread_hash` = 'abc' AND `to_user_id` = '6')
「トリック」は、割り当てで条件を使用することです。行を更新しない場合は、列の現在の値を列に割り当てて、「変更なし」操作を行います。
完全を期すために、条件に thread_hash の条件を追加することをお勧めします。これはクエリで何も変更しませんが:
UPDATE `messages`
SET `from_delete` = IF(`thread_hash` = 'abc' AND `from_user_id` = '6'
,NOW(),`from_delete`)
, `to_delete` = IF(`thread_hash` = 'abc' AND `to_user_id` = '6'
,NOW(),`to_delete` )
WHERE (`thread_hash` = 'abc' AND `from_user_id` = '6')
OR (`thread_hash` = 'abc' AND `to_user_id` = '6')