2016-04-04 9 views
0

テーブルフィールドがデフォルトのNULLの場合、私は単純なUPDATEステートメントを実行しても問題はありません。 field=field+1を発行すると、値は更新されません。それでは、私がしたのは0をフィールドに挿入し、同じfield=field+1をもう一度実行することです。MySQLフィールドの更新フィールドがフィールド=フィールド+ 1の不思議な動作の場合

UPDATE table1 SET field=field+1 WHERE id=123; 

この動作は期待されていますか?

P/S:あなたは、更新の使用のために、次にヌルフィールドを持っている場合fieldタイプはdouble

+0

へあなたの質問を共有してください? –

+0

上記のSQL文を追加しました – d4v1dv00

答えて

1

です。

//structure 
UPDATE TableName SET column = IFNULL(column, 0) + 1 WHERE ... 

//original 
UPDATE table1 SET field = IFNULL(field, 0) + 1 WHERE id=123; 

詳細:function_ifnull

のRef#mysql-update-increment-int-field-that-is-null

+0

一時的な解決策は、フィールドのデフォルト値をゼロ(0)に変更することです。 – d4v1dv00

+0

これは最初にフィールドをゼロに初期化し、それを増加させます。 –

+1

それは私のようないくつかのフィールドがあるので私のために働くでしょう。私はIFNULLの機能チェックをたくさんしたくありません。ありがとう – d4v1dv00

1

NULL+1 = NULL 

だからあなたが持っているので、それはだから "トリック"、それすることができます0

UPDATE table1 SET field=COALESCE(field,0)+1 WHERE id=123; 
関連する問題