唯一の違いは、ur.end_Dateを現在の日付に設定するか、既存の日付に設定するかであるため、次を使用するだけでは不十分です。
UPDATE user p
JOIN user_roles ur
ON p.id = ur.user_id
SET
ur.end_date = IF (ur.end_date IS NULL, NOW(), ur.end_date),
p.end_date = NOW(),
p.reason = "Retired"
WHERE p.id = 5
唯一の違いは、ur.end_Dateを現在の日付に設定するか、既存の日付に設定するかであるため、次を使用するだけでは不十分です。
UPDATE user p
JOIN user_roles ur
ON p.id = ur.user_id
SET
ur.end_date = IF (ur.end_date IS NULL, NOW(), ur.end_date),
p.end_date = NOW(),
p.reason = "Retired"
WHERE p.id = 5