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);

亲自试一试