MySQLでテーブルの特定の1列のみを条件に基づいて更新(インクリメント)する方法
はじめに
MySQLでは、UPDATE文を使うことで、テーブルの特定の列だけを対象に値を更新できます。さらにWHERE句で条件を指定すれば、該当する行の数値を自動的にインクリメント(加算)することも可能です。本記事では、実際のサンプルコードを通して、その手順をわかりやすく解説します。
1. サンプルテーブルを作成する
まず、「Name」と「Score」の2つの列を持つテーブルを作成します。
mysql> create table DemoTable
(
Name varchar(50),
Score int
);
Query OK, 0 rows affected (1.02 sec)
2. テストデータを挿入する
INSERT文を使って、いくつかのレコードを登録しましょう。
mysql> insert into DemoTable values('Sam',45);
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable values('Mike',28);
Query OK, 1 row affected (0.36 sec)
mysql> insert into DemoTable values('Carol',27);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values('David',67);
Query OK, 1 row affected (0.19 sec)
3. 登録したデータを確認する
SELECT文ですべてのレコードを表示します。
mysql> select *from DemoTable;
実行結果は以下のとおりです。
+-------+-------+ | Name | Score | +-------+-------+ | Sam | 45 | | Mike | 28 | | Carol | 27 | | David | 67 | +-------+-------+ 4 rows in set (0.00 sec)
4. 条件に基づいて特定の列のみを更新する
ここが本題です。「Scoreが30未満の行だけ、Scoreの値に10を加算する」には、次のようなUPDATE文を使用します。
mysql> update DemoTable set Score=Score+10 where Score < 30; Query OK, 2 rows affected (0.22 sec) Rows matched: 2 Changed: 2 Warnings: 0
ポイント:「set Score=Score+10」のように現在の値を参照しながら更新することで、元のスコアに10が加算されます。WHERE句で「Score < 30」という条件を指定しているため、Mike(28点)とCarol(27点)の2行だけが更新対象となります。
5. 更新結果を確認する
もう一度SELECT文を実行して、更新後のデータを確認してみましょう。
mysql> select *from DemoTable;
実行結果は以下のとおりです。
+-------+-------+ | Name | Score | +-------+-------+ | Sam | 45 | | Mike | 38 | | Carol | 37 | | David | 67 | +-------+-------+ 4 rows in set (0.00 sec)
まとめ
このように、UPDATE文とWHERE句を組み合わせることで、テーブル内の特定の列だけを効率的に更新できます。「列名 = 列名 + 加算値」という形式を使えば、現在の値を基準にしたインクリメント処理も簡単に実装可能です。条件付きの一括更新は、ポイント加算や在庫数の調整など、実務でもよく使われるテクニックなので、ぜひ覚えておきましょう。
-
JavaでMySQLテーブルに1つのカラムのみを挿入する方法
JavaとMySQLを連携させる際、テーブルの一部のカラムだけにデータを挿入したいケースはよくあります。その場合は、JDBCのINSERT INTOステートメントを使用します。挿入対象のカラム名を明示的に指定することで、他のカラムには影響を与えずに1つのカラムのみへ値を登録できます。この記事では、実際にテーブルを作成し、Javaのコードから「Name」という1つのカラムだけにデータを挿入する手順を解説します。1. 挿入先のテーブルを作成するまず、MySQLで以下のようにテーブルを作成しておきましょう。ここでは、varchar型の「Name」カラムを1つだけ持つシンプルなテーブルを用意します。m
-
MySQLでテーブルを更新し、新しい列に名前のイニシャルを表示する方法
MySQLでは、LEFT()関数とSUBSTRING_INDEX()関数を組み合わせることで、氏名からイニシャル(頭文字)だけを取り出すことができます。この記事では、実際にテーブルを作成し、既存のデータからイニシャルを生成して新しい列に格納する手順を解説します。 1. テーブルの作成 まず、氏名を保存する「full_name」列と、イニシャルを格納する「short_name」列を持つテーブルを作成しましょう。 mysql> create table demo13 -> ( -> full_name varchar(100), -> short_name varchar