The CASE
statement in MySQL evaluates conditions sequentially and returns a value when the first condition is met, similar to an if-then-else statement. Once a condition is satisfied, it stops further evaluation and returns the corresponding result. If none of the conditions are true, it returns the value specified in the ELSE
clause.
If no conditions are true and there is no ELSE
part specified, the CASE
statement in MySQL returns NULL.
CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 WHEN conditionN THEN resultN ELSE result END; |
Here is a selection from the “OrderDetails” table in the Northwind sample database:
OrderDetailID |
OrderID |
ProductID |
Quantity |
1 |
10248 |
11 |
12 |
2 |
10248 |
42 |
10 |
3 |
10248 |
72 |
5 |
4 |
10249 |
14 |
9 |
5 |
10249 |
51 |
40 |
The following SQL statement evaluates conditions and returns a value when the first condition is met:
SELECT OrderID, Quantity, CASE WHEN Quantity > 30 THEN ‘The quantity is greater than 30’ WHEN Quantity = 30 THEN ‘The quantity is 30’ ELSE ‘The quantity is under 30’ END AS QuantityText FROM OrderDetails; |
The following SQL statement orders customers by City. If City values are NULL, it then orders by Country.
SELECT CustomerName, City, Country FROM Customers ORDER BY (CASE WHEN City IS NULL THEN Country ELSE City END); |