MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLで特定の列の値を1つインクリメントする方法

MySQLでは、UPDATE文SET句を組み合わせることで、特定の行の列値を簡単に1つだけ増加(インクリメント)できます。この記事では、サンプルテーブルを作成し、データを挿入したうえで、列の値を +1 する具体的な手順を順を追って解説します。

ステップ1:テーブルを作成する

まず、動作確認用のテーブルを作成しましょう。

mysql> create table DemoTable
-> (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Name varchar(100),
-> Score int
-> );
Query OK, 0 rows affected (0.78 sec)

ステップ2:レコードを挿入する

INSERTコマンドを使って、テーブルにいくつかのレコードを追加します。

mysql> insert into DemoTable(Name,Score) values('John',68);
Query OK, 1 row affected (0.23 sec)

mysql> insert into DemoTable(Name,Score) values('Carol',98);
Query OK, 1 row affected (0.27 sec)

mysql> insert into DemoTable(Name,Score) values('David',89);
Query OK, 1 row affected (0.16 sec)

mysql> insert into DemoTable(Name,Score) values('Robert',67);
Query OK, 1 row affected (0.14 sec)

ステップ3:全レコードを表示する

SELECT文を実行して、テーブル内の全レコードを確認しておきましょう。

mysql> select *from DemoTable;

出力結果

上記のSELECT文を実行すると、次のような結果が表示されます。

+----+--------+-------+
| Id | Name   | Score |
+----+--------+-------+
| 1  | John   | 68    |
| 2  | Carol  | 98    |
| 3  | David  | 89    |
| 4  | Robert | 67    |
+----+--------+-------+
4 rows in set (0.00 sec)

列の値を1つインクリメントするクエリ

特定の行の列値を1増やすには、UPDATE文で Score = Score + 1 のように、列自身の現在の値に1を加算して代入します。このとき、WHERE句で対象となる行を指定するのがポイントです。WHERE句を忘れると、テーブル内の全行が更新されてしまうので注意してください。

mysql> update DemoTable set Score=Score+1 where Id=3;
Query OK, 1 row affected (0.22 sec)
Rows matched: 1  Changed: 1  Warnings: 0

更新後のデータを確認する

もう一度SELECT文でテーブルの内容を表示し、更新が正しく反映されているかチェックしましょう。

mysql> select *from DemoTable;

出力結果

実行すると、次のような結果が得られます。

+----+--------+-------+
| Id | Name   | Score |
+----+--------+-------+
| 1  | John   | 68    |
| 2  | Carol  | 98    |
| 3  | David  | 90    |
| 4  | Robert | 67    |
+----+--------+-------+
4 rows in set (0.00 sec)

Id = 3 の David のスコアが「89」から「90」へと、きちんと1つ増えていることが確認できました。このように、UPDATE文の中で列自身の値を参照しながら加算すれば、カウンタやスコアなど、任意の数値型の列値を簡単にインクリメントできます。なお、減算したい場合は Score = Score - 1、複数ずつ増やしたい場合は Score = Score + 5 のように書き換えるだけで対応可能です。

  1. MySQLでNULLを含む列同士を連結する方法:IFNULL()を使った安全な文字列結合

    MySQLでNULL値を含む列を連結するには? MySQLで複数の列を連結する際、対象の列にNULLが含まれていると、CONCAT()関数の結果全体がNULLになってしまうという問題があります。これを回避するためには、IFNULL()関数を活用するのが効果的です。 この記事では、実際にテーブルを作成し、NULLを含むデータを連結する手順を具体的な例とともに解説します。 1. サンプルテーブルを作成する まず、学生の名前(姓・名)を格納するテーブルを作成しましょう。 mysql> create table DemoTable1793 ( StudentFirstName

  2. MySQLで列の値ごとに「NO」の件数のみをカウントして返すクエリの書き方

    MySQLでは、SUM()関数と条件式を組み合わせることで、グループごとに特定の値(この例では「NO」)が出現した回数だけをカウントできます。ここでは、ENUM型のカラムを持つテーブルを例に、「NO」の件数のみを集計する方法を具体的な手順とともに解説します。 1. テーブルを作成する まず、サンプル用のテーブルを作成します。isTopperカラムはENUM型で、「YES」または「NO」のいずれかの値を持ちます。 mysql> create table DemoTable1829      (      Name varchar(