MySQL中CASE WHEN用法总结
在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
的几种常见用法。
评论已关闭