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

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つで、柔軟に条件分岐を記述できます。条件の性質や可読性に応じて使い分けると良いでしょう。

  1. 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

  2. MySQLのSELECT文でif/else条件を使う方法をわかりやすく解説

    MySQLでは、SELECT文の中で条件分岐を行いたい場合、IF()関数を使うことでif/elseのような処理を実現できます。この記事では、実際にテーブルを作成し、サンプルデータを使いながらIF()関数の使い方を解説します。IF()関数の基本構文IF(条件式, 真の場合の値, 偽の場合の値)条件式がTRUE(真)であれば2番目の引数を返し、FALSE(偅)であれば3番目の引数を返します。プログラミング言語におけるif/else文と同じような役割を果たします。サンプルテーブルの作成まず、動作確認用のテーブルを作成しましょう。mysql> create table DemoTable1966