MySQL中CASE WHEN用法总结
warning:
这篇文章距离上次修改已过442天,其中的内容可能已经有所变动。
在MySQL中,CASE WHEN 语句是一种条件语句,用于根据某些条件执行不同的操作。它非常类似于其他编程语言中的 switch-case 语句。
- 简单的
CASE WHEN语句
SELECT orderNumber, quantityOrdered,
CASE
WHEN quantityOrdered < 30 THEN 'Low'
WHEN quantityOrdered >= 30 AND quantityOrdered < 60 THEN 'Medium'
ELSE 'High'
END AS OrderLevel
FROM orderdetails;在这个例子中,我们根据 quantityOrdered 的值将 OrderLevel 分类为 'Low', 'Medium' 或 'High'。
CASE WHEN THEN ELSE语句与WHERE子句结合使用
SELECT orderNumber, quantityOrdered
FROM orderdetails
WHERE CASE
WHEN quantityOrdered < 30 THEN orderNumber
WHEN quantityOrdered >= 30 AND quantityOrdered < 60 THEN orderNumber
ELSE orderNumber
END = 10253;在这个例子中,我们使用 CASE WHEN THEN ELSE 语句来决定哪个 orderNumber 应该被选择,然后使用返回的 orderNumber 与数值 10253 进行比较。
CASE WHEN THEN ELSE语句与GROUP BY子句结合使用
SELECT
customerNumber,
CASE
WHEN orderNumber < 10000 THEN 'Low'
WHEN orderNumber >= 10000 THEN 'High'
END AS OrderLevel,
COUNT(*) AS OrderCount
FROM orders
GROUP BY
customerNumber,
CASE
WHEN orderNumber < 10000 THEN 'Low'
WHEN orderNumber >= 10000 THEN 'High'
END;在这个例子中,我们根据 orderNumber 的值将 OrderLevel 分类为 'Low' 或 'High',然后对每个 customerNumber 进行分组并计算每个分组的订单数量。
CASE WHEN THEN ELSE语句与ORDER BY子句结合使用
SELECT orderNumber, quantityOrdered
FROM orderdetails
ORDER BY
CASE
WHEN quantityOrdered < 30 THEN 1
WHEN quantityOrdered >= 30 AND quantityOrdered < 60 THEN 2
ELSE 3
END;在这个例子中,我们根据 quantityOrdered 的值将 orderNumber 排序,数值较小的排在前面,然后是介于30到59之间的,最后是大于等于60的。
以上就是MySQL中CASE WHEN的几种常见用法。
评论已关闭