我正在建立一个状态系统,以显示单位的状态,如果您按一个按钮,则任务的状态将更新,前提是您的姓名像该任务的角色之一。但是我不希望状态降级,它需要显示最新状态。所以我想做的就是这样
更新状态设置状态=已清除,其中jobtask1 = name或jobtask2 = name AND status = in_progress或status = in_wait
UPDATE data
SET status='cleared' WHERE person1='$name' OR person2='$name' OR person3='$name' OR person4='$name'
AND status='in_progress' OR status='preparation' OR status='in_wait' OR
status=''
因此,这将导致检查人员之一是更新状态的人员,还是状态类似于指定的状态之一。我希望它检查人员是否像更新状态的人员那样,如果是,则检查状态是否类似于指定的状态之一,并且两者是否正确都更新状态。
答案 0 :(得分:0)
您可以尝试使用SWITCH CASE逻辑
UPDATE data
SET status =
CASE
WHEN (person1='$name' OR person2='$name' OR person3='$name' OR person4='$name') THEN 'cleared'
WHEN (<second_condition>) THEN 'in_progress'
...
ELSE ''
END
您还应该考虑根据规范化原则重新设计数据库。
答案 1 :(得分:0)
感谢Salman和nacho提供的解决方案,我只需要添加括号即可。