0 レビュー
1 回答
php-フィールドの古い値がCASEステートメントを使用して新しい値と一致しない場合にのみMySQLレコードを更新しますか?
特定のプロジェクトに属するプロジェクトタスクをまとめて「完了する」ために使用するPHP関数を作成しています。
プロジェクトに50個のタスクレコードがある場合、現在のソリューションでは50個すべてのレコードが更新され、 status
列がCompleted
に設定されます。 date_modified
列を現在のDateTimeに変更します。この新しいdate_modified
値も、ステータスの一部のみが以前の値から実際に変更されているため、正しくありません。
代わりにSQLクエリを作成したいのですが...
- まだ
status
===Completed
に設定されていないUPDATEレコードのみ
date_modified
フィールドと同じように、実際に現在更新されているレコードについてのみ、このDateTimeを更新する必要があります!これは、まったく異なることを行った別のクエリから取り出したSQLの一部ですが、正しいテーブル名とフィールド名があり、
CASE Statement
がどのように機能するかを示しています。正しいパスになります。しかし、私は自分でそのような高度なスタイルのクエリを実行できるほどのMySQLを知らないので、私が得ることができるすべての助けをいただければ幸いです!
わからない
0
レビュー
答え :
解決策:
「ステータスが完了していないタスクからステータスと日付を更新する」は、非常に簡単に次のように解釈されます。
UPDATE tasks SET status = 'Completed', date_modified = NOW() WHERE status != 'Completed'
( date_modified
列を、更新のたびに現在のタイムスタンプに自動的に更新するように設定することもできます。docs-linkが見つかりませんでしたが、検索してください。 「current_timestampの更新時」)
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。