我々は非常に精通し、非常にシンプルであるべきMySQLのインクリメント式
update `info` set `comments` = `comments`+1 WHERE `id` = 32
それはそれを行う必要があり、時には我々は減算を伴うだろう、
例えば:この記事についてのコメントは、コメントの総数カットする必要が後にロックされているか、削除されたコメントの数記事、
SMALLINTコメント(5)署名のない記事は、統計フィールドの合計数をレビュー0〜65535の間、すなわち、符号なし値が
通常の状況下で1.自己増力+への上記の方法と同様である-ライン上の記号が、問題は、となるであろう減算を行うのであれば0コメントの現在のカウント値フィールドタイプ65535の最大値
update `info` set `comments` = `comments`-1 WHERE `id` = 32
一般的な考えをこの問題を回避するためには2.統計ID主キーに基づいて記事のコメント欄の値をチェックして、PHPで減算し、再度アップデートのみであり、次の2つのSQLコマンドの合計の前と後に実行する必要があります
私は上のMySQLの構文の機能を見て、そして、次のチェックをグーグル、今日はこの情報を見つけることができませんでした。。。決意は、次の例を追加した場合声明文の次に直接試してみましたが、完成されています。
update `info` set `comments` = IF(`comments`< 1,0,`comments`-1) WHERE `id` = 32
デフォルトのコメントは、0であるコメント-1 = 65535;が、テストを直接判断したコメント-1 = 65535が好きではない場合、その理由は、これはこれはサポートされていない場合=番号がわからないと非常に精通していないが何であるかを知らないということが、コメント-1> = 65535( `comments`-1> = 65535,0は、` comments`-1)が0を返す場合注確立することができ、コメントがあるのでとき、0:最大値が65535である状態符号なしSMALLINT最大値は、他のフィールドタイプは調整してください
-------------------------------------------------- -------------------------------------------------- ------------------
初めはそう書かれているが、後少し下に変更、愚かな発見:2014年2月3日は加えました:
update `info` set `comments` = IF(`comments`<1, 0, `comments`-1) WHERE `id` = 32
Xに保存し、それはかどうかのx未満に決定されます
ます。https://my.oschina.net/zhouz/blog/213163で再現