我有一個PHP函數,我正在構建將用於批量「完成」屬於特定項目的項目任務。只有當一個字段的舊值與使用CASE語句的新值不匹配時才更新MySQL記錄?
如果一個項目有50條任務記錄,然後我目前的解決方案將更新所有50條記錄,設置status
列Completed
和date_modified
列到當前日期時間現在。這個新的date_modified
值也是不正確的,因爲只有一些狀態實際上已經從他們以前的值改變了!
我想建立一個SQL查詢,反而會...
-
,尚未設置爲
- 同樣與
date_modified
場 - 只更新記錄,它只應該更新此DateTime以獲取實際正在更新的記錄!
status
===
Completed
這裏是我已經拿出另一個查詢做了完全不同的SQL的一部分,但它確實有正確的表和字段名稱,並演示瞭如何CASE Statement
可能是正確的路徑。然而,我不知道MySQL能夠自己完成這樣一種高級風格的查詢,並會感謝我能夠獲得的所有幫助!
OMG,我很滿意我的CASE聲明,在另一個查詢中,我甚至沒有想過直,我現在感覺很蠢,謝謝指出明顯! – JasonDavis 2014-09-23 04:47:08
沒問題,有時候人們會覺得太複雜:) – Felk 2014-09-23 04:49:29
關於自動更新修改日期的最新更新,我沒有走這條路線的原因是我有一個Sort列和一個Drag n Drop接口然後更新所有記錄的排序順序,這會導致修改後的列在不應該出現的時候一直更新,感謝您的建議 – JasonDavis 2014-09-23 04:50:07