MySQLのCASEステートメントでWHEN句を使う方法を実例付きで解説
MySQLのCASEステートメントとWHEN句とは
MySQLにおけるCASEステートメントは、条件に応じて異なる値を返すための強力な機能です。WHEN句と組み合わせることで、複数の条件分岐をSQLクエリ内で柔軟に処理できます。例えば、点数に応じて評価ラベルを付けたり、特定の値を別の表示内容に変換したりする際に非常に便利です。
CASE WHEN句の基本構文
CASEステートメントとWHEN句を使用する際の基本構文は以下の通りです。
SELECT *,
CASE
WHEN 条件1 THEN 返す値1
WHEN 条件2 THEN 返す値2
...
ELSE 上記以外の場合に返す値
END AS 別名
FROM テーブル名;
条件は上から順番に評価され、最初に一致したWHEN句の値が返されます。どの条件にも当てはまらない場合は、ELSE句で指定した値が返されます。
サンプルテーブルの作成
まず、動作確認用のテーブルを作成しましょう。ここでは学生の名前と点数を管理するテーブルを定義します。
mysql> CREATE TABLE DemoTable
-> (
-> StudentName varchar(20),
-> StudentMarks int
-> );
Query OK, 0 rows affected (0.77 sec)
レコードの挿入
次に、INSERTコマンドを使ってテーブルにデータを追加します。
mysql> INSERT INTO DemoTable VALUES('Chris',78);
Query OK, 1 row affected (0.20 sec)
mysql> INSERT INTO DemoTable VALUES('Robert',88);
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO DemoTable VALUES('Mike',75);
Query OK, 1 row affected (0.19 sec)
mysql> INSERT INTO DemoTable VALUES('Sam',98);
Query OK, 1 row affected (0.16 sec)登録データの確認
SELECT文ですべてのレコードを表示して、データが正しく登録されているか確認します。
mysql> SELECT * FROM DemoTable;
実行結果は以下のようになります。
+-------------+--------------+
| StudentName | StudentMarks |
+-------------+--------------+
| Chris | 78 |
| Robert | 88 |
| Mike | 75 |
| Sam | 98 |
+-------------+--------------+
4 rows in set (0.00 sec)
CASE WHENを使った実際のクエリ
それでは、CASE WHEN句を使って点数に応じた評価を表示するクエリを実行してみましょう。90点より大きい場合は「Very Good Score」、80点より大きい場合は「Good Score」、それ以外は「Not Good」と表示されるように設定します。
mysql> SELECT *,
-> CASE WHEN StudentMarks > 90 THEN 'Very Good Score'
-> WHEN StudentMarks > 80 THEN 'Good Score'
-> ELSE
-> 'Not Good'
-> END AS Status
-> FROM DemoTable;
実行結果
上記のクエリを実行すると、以下のような結果が得られます。
+-------------+--------------+-----------------+
| StudentName | StudentMarks | Status |
+-------------+--------------+-----------------+
| Chris | 78 | Not Good |
| Robert | 88 | Good Score |
| Mike | 75 | Not Good |
| Sam | 98 | Very Good Score |
+-------------+--------------+-----------------+
4 rows in set (0.00 sec)
まとめ
このように、CASEステートメントとWHEN句を組み合わせることで、クエリの結果に対して条件分岐のロジックを簡単に組み込むことができます。各学生の点数に応じて適切な評価が自動的に割り当てられているのが確認できますね。
CASE式はSELECT句だけでなく、ORDER BY句やWHERE句などでも使用できるため、レポート作成やデータ分析の場面で幅広く活用できます。ぜひ実際のプロジェクトでも試してみてください。
-
MySQLのCASE WHENステートメントで条件別のカウントを実行する方法
条件に応じてレコードをカウントしたい場合には、CASE WHENステートメントを活用すると便利です。この記事では、サンプルテーブルを作成し、SUM関数と組み合わせて条件別の件数を集計する手順を、実行結果つきでわかりやすく解説します。 1. サンプルテーブルの作成 まず、以下のコマンドでテーブルを作成しましょう。 mysql> create table DemoTable1910 ( FirstName varchar(20), Marks int ); Query OK, 0 rows affected (0.00 sec) 2. レコードの挿入 続い
-
MySQLクエリでCASE WHEN句の式が動作しないときの正しい書き方
MySQLでCASE WHEN文を正しく使用する方法 MySQLでCASE WHEN文を活用すれば、条件に応じて異なる値を返す柔軟なクエリを作成できます。ここでは、CASE WHEN文を正しく記述する手順を、実際のサンプルとともに解説します。 1. テーブルの作成 まずはサンプル用のテーブルを作成します。 mysql> create table demo58 -> ( -> id int not null auto_increment primary key, -> first_name varchar(20), -> last_name varchar(20)