Php 使用CASE语句仅在字段的旧值与新值不匹配时更新MySQL记录?
我正在构建一个PHP函数,用于批量“完成”属于特定项目的项目任务 如果一个项目有50条任务记录,那么我当前的解决方案将更新所有50条记录,将Php 使用CASE语句仅在字段的旧值与新值不匹配时更新MySQL记录?,php,mysql,sql,case-statement,Php,Mysql,Sql,Case Statement,我正在构建一个PHP函数,用于批量“完成”属于特定项目的项目任务 如果一个项目有50条任务记录,那么我当前的解决方案将更新所有50条记录,将状态列设置为完成,将日期_修改列设置为当前的现在日期时间。这个新的date\u modified值也将是不正确的,因为只有一些状态实际更改了以前的值 我想构建一个SQL查询,它将改为 仅更新尚未设置为状态的记录=已完成 与date\u modified字段相同,它应该只为现在实际更新的记录更新此日期时间 下面是我从另一个查询中提取的SQL的一部分,该查询
状态
列设置为完成
,将日期_修改
列设置为当前的现在日期时间。这个新的date\u modified
值也将是不正确的,因为只有一些状态实际更改了以前的值
我想构建一个SQL查询,它将改为
- 仅更新尚未设置为
=状态的记录
已完成
- 与
字段相同,它应该只为现在实际更新的记录更新此日期时间李>date\u modified
CASE语句如何可能是正确的路径。然而,我不知道足够的MySQL能够做这样一个高级风格的查询我自己,并将感谢所有的帮助,我可以得到 “从状态未完成的任务中更新状态和日期”很容易理解为:
updatetasks SET status='Completed',date\u modified=NOW()其中status!='已完成“
(你也可以设置你的date\u modified
列,每次更新都会自动更新到当前时间戳。没有找到文档链接,但搜索“on update current\u timestamp”)OMG,我在另一个查询中被我的案例陈述弄得不知所措,我现在觉得很傻,感谢您指出显而易见的问题!没问题,人们有时会觉得太复杂:)关于你上次的更新,关于自动更新修改日期,我之所以没有这样做,是因为我有一个排序列和一个拖放界面,然后更新所有记录的排序顺序,这将导致修改后的列在不应该更新的时候一直被更新,不过还是要感谢您的建议