MySQL CASE 语句
MySQL CASE 语句
CASE 语句用于通过条件进行判断,当满足第一个条件时返回一个值(类似于 if-then-else 语句)。因此,一旦某个条件为真,它就会停止读取并返回结果。如果没有任何条件为真,则返回 ELSE 子句中的值。
如果没有 ELSE 部分并且没有任何条件为真,它将返回 NULL。
CASE 语法
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
WHEN conditionN THEN resultN
ELSE result
END;
演示数据库
以下是 Northwind 演示数据库中“OrderDetails”表的一部分:
| OrderDetailID | OrderID | ProductID | Quantity |
|---|---|---|---|
| 1 | 10248 | 11 | 12 |
| 2 | 10248 | 42 | 10 |
| 3 | 10248 | 72 | 5 |
| 4 | 10249 | 14 | 9 |
| 5 | 10249 | 51 | 40 |
MySQL CASE 实例
以下 SQL 会根据条件进行判断,并在满足第一个条件时返回一个值:
实例
SELECT ProductName, Price, CASE WHEN Price < 20 THEN 'Low Cost' WHEN Price BETWEEN 20 AND 50 THEN 'Medium Cost' ELSE 'High Cost' END AS PriceCategory FROM Products;
以下 SQL 将根据 City 对客户进行排序。但是,如果 City 为 NULL,则会按 Country 进行排序:
实例
SELECT CustomerName, City, Country
FROM Customers
ORDER BY
(CASE
WHEN City IS NULL THEN Country
ELSE City
END);