我正在构建一个PHP函数,该函数将用于批量"完成"属于特定项目的项目任务。
如果一个项目有50条Task记录,那么我当前的解决方案将更新所有50条记录,将status
列设置为Completed
,将date_modified
列设置为当前的DateTime。这个新的date_modified
值也不正确,因为只有一些状态与以前的值发生了实际变化!
我想构建一个SQL查询,它将。。。
- 仅UPDATE未设置为
status
===Completed
的记录 - 与
date_modified
字段相同,它应该只为现在实际更新的记录更新此DateTime
以下是我从另一个查询中提取的SQL的一部分,该查询做了完全不同的事情,但它确实有正确的表和字段名称,并演示了CASE Statement
可能是正确的路径。然而,我对MySQL的了解还不够,无法独自完成这样一个高级风格的查询,如果能得到我的帮助,我将不胜感激!
"从状态未完成的任务中更新状态和日期"很容易翻译为:
UPDATE tasks SET status = 'Completed', date_modified = NOW() WHERE status != 'Completed'
(你也可以设置date_modified
列,每次更新都会自动更新到当前时间戳。没有找到docs链接,但搜索"on update current_timestamp")