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

MySQLのCASE WHENステートメントで条件に応じた値を取得する方法

MySQLでは、CASE WHEN ステートメントを使用することで、特定の条件が満たされた場合にのみ別の列の値を返し、それ以外の場合は元の列の値を出力するといった柔軟な条件分岐処理を実現できます。本記事では、具体的な手順を通してその使い方を解説します。

1. サンプルテーブルの作成

まず、以下のCREATE TABLE文でテーブルを作成します。

mysql> create table DemoTable1040
(
    Value1 int,
    Value2 int,
    Value3 int
);
Query OK, 0 rows affected (0.65 sec)

2. レコードの挿入

続いて、INSERT文を使ってテーブルにいくつかのレコードを挿入します。

mysql> insert into DemoTable1040 values(10,30,1);
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable1040 values(40,20,50);
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable1040 values(80,90,100);
Query OK, 1 row affected (0.11 sec)

3. テーブル内の全レコードを表示

SELECT文でテーブル内のすべてのレコードを確認してみましょう。

mysql> select *from DemoTable1040;

このクエリを実行すると、以下のような結果が出力されます。

+--------+--------+--------+
| Value1 | Value2 | Value3 |
+--------+--------+--------+
|     10 |     30 |      1 |
|     40 |     20 |     50 |
|     80 |     90 |    100 |
+--------+--------+--------+
3 rows in set (0.00 sec)

4. CASE WHENを使った条件分岐クエリ

ここからが本題です。次のクエリでは、CASE WHENを使って「Value1 = 40 かつ Value2 = 20」という条件が成立した場合にValue2の値を返し、それ以外の場合はValue1の値を返しています。

mysql> select case when (Value1=40 AND Value2=20) then Value2 else Value1 end as selectedValue from DemoTable1040;

このクエリを実行すると、以下の出力が得られます。

+---------------+
| selectedValue |
+---------------+
|            10 |
|            20 |
|            80 |
+---------------+
3 rows in set (0.00 sec)

実行結果のポイント

出力結果を見ると、2行目だけが20になっています。これは、該当する行(Value1=40、Value2=20)がCASE WHENの条件を満たしたため、ELSE句ではなくTHEN句で指定したValue2の値が返されたからです。他の行は条件を満たさないため、ELSE句で指定されたValue1の値(10と80)が出力されています。

このように、MySQLのCASE WHENステートメントを活用すれば、WHERE句のように行を絞り込むのではなく、各行ごとに条件を評価して返す値を切り替えることが可能です。集計時のラベル変換や、複数条件による動的な値の選択など、さまざまな場面で役立ちます。

  1. MySQLのCASEステートメントでWHEN句を使う方法を実例付きで解説

    MySQLのCASEステートメントとWHEN句とはMySQLにおけるCASEステートメントは、条件に応じて異なる値を返すための強力な機能です。WHEN句と組み合わせることで、複数の条件分岐をSQLクエリ内で柔軟に処理できます。例えば、点数に応じて評価ラベルを付けたり、特定の値を別の表示内容に変換したりする際に非常に便利です。CASE WHEN句の基本構文CASEステートメントとWHEN句を使用する際の基本構文は以下の通りです。SELECT *, CASE WHEN 条件1 THEN 返す値1 WHEN 条件2 THEN 返す値2 ...

  2. Pythonのif文でpassステートメントは使える?基本的な使い方を解説

    PythonのpassステートメントとはPythonにおける pass は、何も処理を行わないダミー文(プレースホルダ)です。Pythonでは if 文や関数定義など、構文上どうしても何らかの文を記述する必要がある場面があります。しかし、実際の処理内容がまだ決まっていない場合や、意図的に「何もしない」ことを明示したい場合に、pass を記述することで構文エラーを回避できます。pass は if ブロックだけでなく、else ブロックでも使用できます。if文とelse文でのpassの使用例以下のように、条件式が真の場合も偽の場合も、現時点では処理を実装せずに後回しにしたいとき、両方のブロックで