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 のように書き換えるだけで対応可能です。
-
MySQLでNULLを含む列同士を連結する方法:IFNULL()を使った安全な文字列結合
MySQLでNULL値を含む列を連結するには? MySQLで複数の列を連結する際、対象の列にNULLが含まれていると、CONCAT()関数の結果全体がNULLになってしまうという問題があります。これを回避するためには、IFNULL()関数を活用するのが効果的です。 この記事では、実際にテーブルを作成し、NULLを含むデータを連結する手順を具体的な例とともに解説します。 1. サンプルテーブルを作成する まず、学生の名前(姓・名)を格納するテーブルを作成しましょう。 mysql> create table DemoTable1793 ( StudentFirstName
-
MySQLで列の値ごとに「NO」の件数のみをカウントして返すクエリの書き方
MySQLでは、SUM()関数と条件式を組み合わせることで、グループごとに特定の値(この例では「NO」)が出現した回数だけをカウントできます。ここでは、ENUM型のカラムを持つテーブルを例に、「NO」の件数のみを集計する方法を具体的な手順とともに解説します。 1. テーブルを作成する まず、サンプル用のテーブルを作成します。isTopperカラムはENUM型で、「YES」または「NO」のいずれかの値を持ちます。 mysql> create table DemoTable1829 ( Name varchar(