MySQLのCASE式で「OR」条件を実現する方法を解説
MySQLのCASE式で「OR」条件を実現する方法
MySQLのCASE式では、複数のWHEN句を組み合わせることで、「OR」に相当する条件分岐を実現できます。さらに、WHEN句の中にOR演算子を直接記述することも可能です。ここでは、まずサンプルテーブルを作成し、実際の動作を順番に確認していきましょう。
1. サンプルテーブルの作成
まず、以下のクエリでサンプルテーブルを作成します。
mysql> create table caseOrConditionDemo
-> (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Name varchar(100),
-> Score int
-> );
Query OK, 0 rows affected (0.49 sec)
2. レコードの挿入
次に、insertコマンドを使用してテーブルにレコードを挿入します。
mysql> insert into caseOrConditionDemo(Name,Score) values('Larry',85);
Query OK, 1 row affected (0.18 sec)
mysql> insert into caseOrConditionDemo(Name,Score) values('Sam',74);
Query OK, 1 row affected (0.20 sec)
mysql> insert into caseOrConditionDemo(Name,Score) values('Mike',76);
Query OK, 1 row affected (0.16 sec)
mysql> insert into caseOrConditionDemo(Name,Score) values('Carol',65);
Query OK, 1 row affected (0.20 sec)
3. レコードの確認
selectコマンドでテーブルの内容を表示します。
mysql> select *from caseOrConditionDemo;
実行結果は以下の通りです。
+----+-------+-------+ | Id | Name | Score | +----+-------+-------+ | 1 | Larry | 85 | | 2 | Sam | 74 | | 3 | Mike | 76 | | 4 | Carol | 65 | +----+-------+-------+ 4 rows in set (0.00 sec)
4. CASE式で条件分岐を実装する
CASE式を使って「OR」のような条件分岐を実現するクエリがこちらです。複数のWHEN句を上から順に評価することで、OR条件と同等の動作を実現しています。
mysql> select Id,Name,Score,
-> case when Score > 75 then 'Better Score'
-> when Score > 70 then 'Good Score'
-> else 'Not Good Score'
-> end as 'Performance'
-> from caseOrConditionDemo;
実行結果は以下の通りです。スコアに応じて「Performance」列に評価結果が表示されます。
+----+-------+-------+----------------+ | Id | Name | Score | Performance | +----+-------+-------+----------------+ | 1 | Larry | 85 | Better Score | | 2 | Sam | 74 | Good Score | | 3 | Mike | 76 | Better Score | | 4 | Carol | 65 | Not Good Score | +----+-------+-------+----------------+ 4 rows in set (0.04 sec)
補足:WHEN句内でOR演算子を直接使用する方法
なお、CASE式のWHEN句の中には、OR演算子を直接記述することもできます。例えば「スコアが85以上、または65以下」といった条件を1つのWHEN句で表現したい場合は、以下のように書けます。
case when Score >= 85 OR Score <= 65 then 'Special' else 'Normal' end
このように、CASE式では「複数のWHEN句を並べて順に評価する」方法と「1つのWHEN句内でOR演算子を使う」方法の2つで、柔軟に条件分岐を記述できます。条件の性質や可読性に応じて使い分けると良いでしょう。
-
MySQLクエリでCASE条件を使ってカウントする方法
MySQLでは、CASE WHENを活用し、COUNT()関数の中にCASE条件を設定することで、特定の条件に一致するレコードだけを数えることができます。この仕組みが成り立つのは、COUNT()関数がNULL値を無視するためです。条件に合わない場合にNULLを返すことで、そのレコードはカウント対象から除外されます。1. サンプルテーブルの作成まず、以下のコマンドでテーブルを作成します。 ); Query OK, 0 rows affected (0.61 sec)2. レコードの挿入続いて、insertコマンドを使ってテーブルにデータを登録します。mysql> insert into D
-
MySQLのSELECT文でif/else条件を使う方法をわかりやすく解説
MySQLでは、SELECT文の中で条件分岐を行いたい場合、IF()関数を使うことでif/elseのような処理を実現できます。この記事では、実際にテーブルを作成し、サンプルデータを使いながらIF()関数の使い方を解説します。IF()関数の基本構文IF(条件式, 真の場合の値, 偽の場合の値)条件式がTRUE(真)であれば2番目の引数を返し、FALSE(偅)であれば3番目の引数を返します。プログラミング言語におけるif/else文と同じような役割を果たします。サンプルテーブルの作成まず、動作確認用のテーブルを作成しましょう。mysql> create table DemoTable1966