MySQLで既存の値に+1を加算する方法|UPDATE文の基本と実例
MySQLでは、UPDATE文を使うことで、テーブル内の既存の数値に簡単に+1を加算できます。この記事では、実際にテーブルを作成し、データを挿入してから、既存の値に1を足す手順を具体例とともに解説します。
サンプルテーブルの作成
まずは動作確認用に、int型のカラムを持つシンプルなテーブルを作成しましょう。
mysql> create table Add1ToExistingValue
-> (
-> Value int
-> );
Query OK, 0 rows affected (0.56 sec)テストデータの挿入
次に、INSERTコマンドを使って複数のレコードを登録します。
mysql> insert into Add1ToExistingValue values(10); Query OK, 1 row affected (0.12 sec) mysql> insert into Add1ToExistingValue values(13); Query OK, 1 row affected (0.15 sec) mysql> insert into Add1ToExistingValue values(15); Query OK, 1 row affected (0.13 sec) mysql> insert into Add1ToExistingValue values(16); Query OK, 1 row affected (0.14 sec) mysql> insert into Add1ToExistingValue values(20); Query OK, 1 row affected (0.16 sec) mysql> insert into Add1ToExistingValue values(40); Query OK, 1 row affected (0.15 sec) mysql> insert into Add1ToExistingValue values(50); Query OK, 1 row affected (0.11 sec) mysql> insert into Add1ToExistingValue values(55); Query OK, 1 row affected (0.17 sec) mysql> insert into Add1ToExistingValue values(56); Query OK, 1 row affected (0.17 sec)
現在のデータを確認する
SELECT文ですべてのレコードを表示して、更新前の状態を確認しておきましょう。
mysql> select *from Add1ToExistingValue;
実行結果は以下の通りです。
+-------+ | Value | +-------+ | 10 | | 13 | | 15 | | 16 | | 20 | | 40 | | 50 | | 55 | | 56 | +-------+ 9 rows in set (0.00 sec)
既存の値に+1するUPDATEクエリ
ここが本題です。既存の値に1を加算するには、SET句で Value = Value + 1 のように指定します。さらにWHERE句で条件を指定すれば、該当する行だけを対象に更新できます。
以下の例では、「20以上の値」を持つ行のみに+1しています。
mysql> update Add1ToExistingValue set Value=Value+1 where Value >=20; Query OK, 5 rows affected (0.08 sec) Rows matched: 5 Changed: 5 Warnings: 0
このように、5行がマッチし、5行が更新されたことがわかります。
更新後のデータを確認する
再度SELECT文を実行して、結果を確認してみましょう。
mysql> select *from Add1ToExistingValue;
実行結果は以下の通りです。
+-------+ | Value | +-------+ | 10 | | 13 | | 15 | | 16 | | 21 | | 41 | | 51 | | 56 | | 57 | +-------+ 9 rows in set (0.00 sec)
20以上だった値(20・40・50・55・56)が、それぞれ21・41・51・56・57に+1されていることが確認できました。一方、条件に合わなかった10・13・15・16は元のままです。
まとめ
既存の値に+1する基本的な構文は以下の通りです。
UPDATE テーブル名 SET カラム名 = カラム名 + 1 WHERE 条件;
WHERE句を省略すればテーブル内の全行が更新対象になります。また、応用として Value - 1 で減算したり、Value + 10 のように任意の数値を加算することも可能です。在庫数やアクセスカウンタなどを一括で更新したい場合に非常に便利なテクニックなので、ぜひ覚えておきましょう。
-
MySQLの既存テーブルに現在の日付を追加・更新する方法
既存のテーブルを更新するには UPDATE 文を使用します。そして、現在の日付を設定するには CURDATE() 関数を使います。UPDATE テーブル名 SET カラム名 = CURDATE();サンプルテーブルの作成まずは動作確認用のテーブルを作成しましょう。mysql> create table DemoTable-> (-> DueDate datetime-> );Query OK, 0 rows affected (0.58 sec)データの挿入次に、INSERT コマンドを使ってテーブルにいくつかのレコードを挿入します。mysql> insert i
-
MySQLの1つのALTER文でカラムとインデックスを同時に追加する方法
はじめにMySQLでは、既存のテーブルに新しいカラムを追加すると同時に、そのカラムにインデックスを設定したいケースはよくあります。通常、これらは2つの別々のクエリで実行するイメージがありますが、実はALTER TABLE文を使えば、たった1つのクエリでカラムの追加とインデックスの作成を同時に行うことができます。この記事では、具体的な手順を実行例とともにわかりやすく解説します。基本構文ALTER文にADD句を組み合わせて使用します。構文は以下の通りです。ALTER TABLE テーブル名ADD カラム名 DATETIME DEFAULT NOW(),ADD INDEX(カラム名);ポイントは、複