MySQL の CASE WHEN

Preet Sanghavi 2023年1月3日
MySQL の CASE WHEN

このチュートリアルでは、MySQL データベースで CASE WHEN ステートメントを使用する方法を理解することを目的としています。

大量のデータを扱う企業や組織は、特定の条件に基づいてデータをフィルタリングする必要があります。また、複数の条件がある場合、プログラマーがデータをすばやく取得できる効率的なクエリを作成することは困難になります。

MySQL は、CASE WHEN ステートメントを使用してこの操作を実行するのに役立ちます。

CASE WHEN ステートメントは、MySQL でデータフィルタリングを扱うすべての職場で役立ち、採用されています。このメソッドの動作を見てみましょう。

ただし、始める前に、いくつかの行を持つテーブル student_details を作成して、ダミーのデータセットを作成しましょう。

-- create the table student_details
CREATE TABLE student_details(
  stu_id int,
  stu_firstName varchar(255) DEFAULT NULL,
  stu_lastName varchar(255) DEFAULT NULL,
  primary key(stu_id)
);
-- insert rows to the table student_details
INSERT INTO student_details(stu_id,stu_firstName,stu_lastName) 
 VALUES(1,"Preet","Sanghavi"),
 (2,"Rich","John"),
 (3,"Veron","Brow"),
 (4,"Preet","Jos"),
 (5,"Hash","Shah"),
 (6,"Sachin","Parker"),
 (7,"David","Miller");

上記のクエリは、学生の名前と名前を含む行を含むテーブルを作成します。データのエントリを表示するには、次のコードを使用します。

SELECT * FROM student_details;

上記のコードは、次の出力を提供します。

stu_id	stu_firstName	stu_lastName
1	      Preet	        Sanghavi
2	      Rich	        John
3	      Veron	        Brow
4	      Preet	        Jos
5	      Hash	        Shah
6	      Sachin	    Parker
7	      David	        Miller

テーブルが設定されたので、CASE WHEN ステートメントを使用してこのデータをフィルタリングしましょう。

MySQL の CASE WHEN

上記のように、CASE WHEN ステートメントは、式で指定された条件を満たす値をフェッチするのに役立ちます。

CASE WHEN ステートメントの基本的な構文は次のとおりです。

CASE
    WHEN condition_1 THEN output_1
    WHEN condition_2 THEN output_2
    ELSE output_3
END;

前述のコードは、condition_1 が満たされた場合は output_1 を返し、condition_2 が満たされた場合は output_2 を返し、condition_1condition_2 のどちらも満たされない場合は output_3 を返します。

次に、stu_id に基づいて student_details テーブルをフィルタリングしましょう。stu_id が 3 以下の場合は、student with smaller id を出力し、stu_id が 3 より大きい場合は、student with greater id を出力します。

この操作は、次のコードで実行できます。

SELECT stu_id, stu_firstName,
CASE
    WHEN stu_id > 3 THEN 'student with greater id'
    ELSE 'student with smaller id'
END as case_result
FROM student_details;

前述のクエリの出力は次のとおりです。

stu_id	stu_firstName	case_result
1		Preet			student with smaller id
2		Rich			student with smaller id
3		Veron			student with smaller id
4		Preet			student with greater id
5		Hash			student with greater id
6		Sachin			student with greater id
7		David			student with greater id

前述のコードブロックでわかるように、stu_id が 3 より大きい学生は、ケースの結果として student with greater id を取得します。それ以外の場合は、ケースの結果として student with smaller id が表示されます。

前述のコードでは、MySQL の AS キーワードとして読みやすくするために、エイリアス case_result を使用しています。

したがって、CASE WHEN ステートメントを使用すると、さまざまな条件を効率的に調べて、MySQL のテーブルから一致するデータを見つけることができます。

著者: Preet Sanghavi
Preet Sanghavi avatar Preet Sanghavi avatar

Preet writes his thoughts about programming in a simplified manner to help others learn better. With thorough research, his articles offer descriptive and easy to understand solutions.

LinkedIn GitHub

関連記事 - MySQL Query