MySQLで条件に基づいてレコードを置き換える方法(CASE文の使い方)
MySQLで条件に応じてレコードの値を置き換えたい場合は、CASE文を使用します。CASE文を使うことで、UPDATE文の中で複数の条件分岐を定義し、それぞれの条件に一致するレコードに対して異なる値を設定できます。
ここでは、実際のサンプルを通じて具体的な手順を解説します。
1. サンプルテーブルの作成
まず、テスト用のテーブルを作成します。
mysql> create table DemoTable1481
-> (
-> PlayerScore int
-> );
Query OK, 0 rows affected (0.42 sec)
2. レコードの挿入
INSERT文を使って、テーブルにいくつかのレコードを追加します。
mysql> insert into DemoTable1481 values(454);
Query OK, 1 row affected (0.41 sec)
mysql> insert into DemoTable1481 values(765);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable1481 values(890);
Query OK, 1 row affected (0.09 sec)
3. レコードの確認
SELECT文ですべてのレコードを表示して、挿入が正しく行われたか確認しましょう。
mysql> select * from DemoTable1481;
実行結果は以下の通りです。
+-------------+
| PlayerScore |
+-------------+
| 454 |
| 765 |
| 890 |
+-------------+
3 rows in set (0.00 sec)
4. CASE文を使ってレコードを置き換える
ここが本題です。UPDATE文とCASE文を組み合わせることで、既存の値に応じて新しい値に置き換えることができます。
mysql> update DemoTable1481
-> set PlayerScore= case when PlayerScore=454 then 1256
-> when PlayerScore=765 then 1865
-> when PlayerScore=890 then 3990
-> end
-> ;
Query OK, 3 rows affected (0.17 sec)
Rows matched: 3 Changed: 3 Warnings: 0
このクエリでは、以下のルールで値が置き換えられます。
- 454 のレコード → 1256 に更新
- 765 のレコード → 1865 に更新
- 890 のレコード → 3990 に更新
5. 更新結果の確認
もう一度テーブルの内容を確認してみましょう。
mysql> select * from DemoTable1481;
実行結果は以下の通りです。
+-------------+
| PlayerScore |
+-------------+
| 1256 |
| 1865 |
| 3990 |
+-------------+
3 rows in set (0.00 sec)
まとめ
MySQLで条件に基づいてレコードを置き換えるには、UPDATE文の中でCASE文を使用します。CASE文は「when 条件 then 値」の形式で条件分岐を記述でき、複数の置き換えルールを1つのクエリでまとめて実行できるのが大きなメリットです。
なお、CASE文にELSE句を指定しない場合、どの条件にも一致しないレコードの値はNULLになってしまうため注意が必要です。条件に一致しないレコードの値を維持したい場合は、「ELSE PlayerScore」のようにELSE句を追加することをおすすめします。
-
MySQLで特定の月と年に基づいてレコードを取得する方法
MySQLで特定の月と年に基づいてレコードを取得する方法日付データから特定の月と年に該当するレコードだけを抽出したい場合、MySQLの MONTH() 関数と YEAR() 関数を組み合わせて使用します。ここでは、実際にテーブルを作成し、データを挿入して、条件に合うレコードを取得するまでの手順を具体的に解説します。1. サンプルテーブルの作成まず、日付型(DATE)のカラムを持つテーブルを作成します。mysql> create table DemoTable1846 ( PurchaseDat
-
MySQLでURLレコードの一部を検索して置き換える方法
MySQLでURLなどの文字列レコードの一部を検索して置き換えたい場合、最もシンプルな方法はREPLACE()関数を使うことです。この記事では、実際のサンプルを使いながら、URLの一部を一括置換する手順をわかりやすく解説します。1. サンプルテーブルの作成まず、URLを格納するためのテーブルを作成します。mysql> create table DemoTable2025 -> ( -> URL text -> );Query OK, 0 rows affected (0.88 sec)2. テストデータの挿入次に、INSERTコマンドを使ってサンプルレ