MySQL(MariaDB)で条件分岐を使う方法(CASE)

MySQL(MariaDB)で条件分岐を使う方法(CASE)

MySQL(MariaDB)で条件分岐を行いたい場合は、「CASE」を使用します。
書き方を覚えれば、いろんなことに利用できます。

基本的なCASEの使い方

CASE
WHEN 条件1 THEN 表示1
WHEN 条件2 THEN 表示2
ELSE 表示その他
END

サンプル文

SELECT flag FROM test_table;
+------+
| flag |
+------+
|    1 |
|    2 |
|    3 |
|    4 |
+------+

SELECT
 (CASE
   WHEN flag = 1 THEN 'A'
   WHEN flag = 2 THEN 'B'
   WHEN flag = 3 THEN 'C'
 ELSE 'Z'
 END) AS a_flag
 FROM test_table;
+--------+
| a_flag |
+--------+
| A      |
| B      |
| C      |
| Z      |
+--------+

複数のCASEの使い方

CASE結果の部分にCASEを使うことでできます。

CASE
WHEN 条件1 THEN
CASE
WHEN 条件2 THEN 表示2
ELES 表示1
END
ELSE 表示その他
END

サンプル文

SELECT * FROM test_table;
+------+-------+
| flag | flag2 |
+------+-------+
|    1 |     1 |
|    2 |  NULL |
|    3 |  NULL |
|    4 |  NULL |
+------+-------+

SELECT
 (CASE
  WHEN flag = 1 THEN
    CASE
     WHEN flag2 = 1 THEN 'AA'
    ELSE 'A'
    END 
  WHEN flag = 2 THEN 'B'
  WHEN flag = 3 THEN 'C'
 ELSE 'Z'
 END) AS a_flag
 FROM test_table;
+--------+
| a_flag |
+--------+
| AA     |
| B      |
| C      |
| Z      |
+--------+