CASE WHEN in MySQL
In this tutorial, we aim at understanding how to use the CASE WHEN
statement in a MySQL database.
Businesses and organizations dealing with large amounts of data need to filter the data based on certain conditions. And if there are multiple conditions, it becomes difficult for the programmer to write an efficient query that can quickly retrieve data.
MySQL helps us perform this operation with the help of the CASE WHEN
statement.
The CASE WHEN
statement is useful and employed in all workplaces dealing with data filtering in MySQL. Let us see this method in action.
But before we begin, let us create a dummy dataset by creating a table, student_details
with a few rows.
-- 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");
The above query creates a table with rows with student first name and last name in it. To view the entries in the data, we use the following code:
SELECT * FROM student_details;
The above code would give the following output:
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
As we have our table set up, let us filter this data using the CASE WHEN
statement.
CASE WHEN
in MySQL
As mentioned above, the CASE WHEN
statement helps us fetch values that meet the condition specified in its expression.
Here is the basic syntax of the CASE WHEN
statement:
CASE
WHEN condition_1 THEN output_1
WHEN condition_2 THEN output_2
ELSE output_3
END;
The aforementioned code returns the output_1
when the condition_1
is satisfied, output_2
when the condition_2
is satisfied, and output_3
when the neither of condition_1
and condition_2
are satisfied.
Now, let us filter the student_details
table based on the stu_id
. When the stu_id
is less than or equal to three, we wish to print student with smaller id
, and when the stu_id
is greater than three, we print student with greater id
.
We can perform this operation with the following code.
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;
The output of the aforementioned query is as follows.
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
As we can see in the aforementioned code block, students with stu_id
greater than three get student with greater id
as the case result. Otherwise, we get student with smaller id
as the case result.
case_result
for better readability with as AS
keyword in MySQL.Thus, with the help of the CASE WHEN
statement, we can efficiently go through different conditions and find matching data from a table in MySQL.