次の列を持つ(mysql)データベーステーブルがあります。
NAME | String (Unique)
STATUS | int
UPDATE_COUNT | int (Unique)
Max(UPDATE_COUNT)の値に、テーブルの行に対して実行された更新の累積数を反映させたい。たとえば、空のテーブルから始めます。
Insert - (Name=John, Status=0) - // update count on that row is set to 1
Insert - (Name=Mary, Status=0) - // update count on that row is set to 2
Update - (Name=John, Status=1) - // update count on that row is set to 3
Update - (Name=Mary, Status=2) - // update count on that row is set to 4
等..
したがって、更新されているか挿入されているかに関係なく、どの行でも、各行で挿入または更新される更新カウントの値はmax(update_count)+1です。
「mytableからmax(update_count)を選択」という考え方は、実行された挿入/更新の総数を表します。
update_countの値を自動的にインクリメントするinsertおよびupdatesqlステートメントを作成したいと思います。
"UPDATE MYTABLE SET STATUS=1,UPDATE_COUNT=(SELECT MAX(UPDATE_COUNT) FROM MYTABLE) WHERE NAME IN ('John', 'Mary')"
ただし、これは有効なSQLではありません。更新ステートメントには、同じテーブルから選択するfrom句が含まれていない可能性があります。mysqlのエラーは次のとおりです。
"You can't specify target table 'MYTABLE' for update in FROM clause"
この制限を回避する方法について何か提案はありますか?