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

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句を追加することをおすすめします。

  1. MySQLで特定の月と年に基づいてレコードを取得する方法

    MySQLで特定の月と年に基づいてレコードを取得する方法日付データから特定の月と年に該当するレコードだけを抽出したい場合、MySQLの MONTH() 関数と YEAR() 関数を組み合わせて使用します。ここでは、実際にテーブルを作成し、データを挿入して、条件に合うレコードを取得するまでの手順を具体的に解説します。1. サンプルテーブルの作成まず、日付型(DATE)のカラムを持つテーブルを作成します。mysql> create table DemoTable1846     (     PurchaseDat

  2. MySQLでURLレコードの一部を検索して置き換える方法

    MySQLでURLなどの文字列レコードの一部を検索して置き換えたい場合、最もシンプルな方法はREPLACE()関数を使うことです。この記事では、実際のサンプルを使いながら、URLの一部を一括置換する手順をわかりやすく解説します。1. サンプルテーブルの作成まず、URLを格納するためのテーブルを作成します。mysql> create table DemoTable2025 -> ( -> URL text -> );Query OK, 0 rows affected (0.88 sec)2. テストデータの挿入次に、INSERTコマンドを使ってサンプルレ