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_1
と condition_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
が表示されます。
AS
キーワードとして読みやすくするために、エイリアス case_result
を使用しています。したがって、CASE WHEN
ステートメントを使用すると、さまざまな条件を効率的に調べて、MySQL のテーブルから一致するデータを見つけることができます。