two different types of case expressions.
Searched case Expression
Syntax
CASE WHEN C1 THEN E1
WHEN C2 THEN E2
...
WHEN Cn THEN En
[ELSE E]
ENDkeep in mind that case expressions may return any type of expression, including subqueries
mysql> SELECT c.first_name, c.last_name,
-> CASE
-> WHEN active = 0 THEN 0
-> ELSE
-> (SELECT count(*) FROM rental r
-> WHERE r.customer_id = c.customer_id)
-> END num_rentals
-> FROM customer c;
| BARBARA | JONES | 22 |
| ELIZABETH | BROWN | 38 |
| JENNIFER | DAVIS | 28 |
...
| TERRANCE | ROUSH | 0 |
| RENE | MCALISTER | 26 |
| EDUARDO | HIATT | 27 |Depending on the percentage of active customers, using this approach may be more efficient than joining the customer and rental tables and grouping on the customer_id column.
Examples of case Expressions
mysql> SELECT
-> SUM(CASE WHEN monthname(rental_date) = 'May' THEN 1
-> ELSE 0 END) May_rentals,
-> SUM(CASE WHEN monthname(rental_date) = 'June' THEN 1
-> ELSE 0 END) June_rentals,
-> SUM(CASE WHEN monthname(rental_date) = 'July' THEN 1
-> ELSE 0 END) July_rentals
-> FROM rental
-> WHERE rental_date BETWEEN '2005-05-01' AND '2005-08-01';
| May_rentals | June_rentals | July_rentals |
| 1156 | 2311 | 6709 |