MySQL case when的用法

MySQL case when的用法

MySQL case when的用法

在MySQL数据库中,CASE WHEN语句是一种非常强大的条件表达式,它允许我们根据不同的条件执行不同的操作或返回不同的结果。在本篇文章中,我们将详细介绍MySQL的CASE WHEN语句的用法,并通过一些示例代码来帮助读者更好地理解。

基本语法

CASE WHEN语句的基本语法如下:

CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    ...
    WHEN conditionN THEN resultN
    ELSE elseResult
END

其中,condition1condition2,…,conditionN是用于判断的条件表达式,result1result2,…,resultN是当对应条件满足时返回的结果,elseResult是当所有条件都不满足时返回的结果。

CASE WHEN语句的执行顺序是从上到下,当第一个满足条件的WHEN子句被找到时,对应的THEN子句的结果将被返回。如果没有满足条件的WHEN子句,将返回ELSE子句的结果。如果没有指定ELSE子句,将返回NULL

示例代码

示例1:根据分数判断成绩等级

SELECT 
    CASE 
        WHEN score >= 90 THEN 'A'
        WHEN score >= 80 THEN 'B'
        WHEN score >= 70 THEN 'C'
        WHEN score >= 60 THEN 'D'
        ELSE 'F'
    END AS grade
FROM 
    students;

以上代码将根据学生的分数判断其成绩等级,并将结果保存在名为grade的列中。根据不同的条件,将返回相应的等级,如果不满足任何条件,则返回F

示例2:统计不同年龄段的人数

假设我们有一个employees表,其中包含员工的姓名和年龄。我们想要统计不同年龄段的人数,并以年龄段作为一列返回结果。

SELECT 
    CASE 
        WHEN age < 20 THEN '20以下'
        WHEN age >= 20 AND age < 30 THEN '20-29'
        WHEN age >= 30 AND age < 40 THEN '30-39'
        WHEN age >= 40 THEN '40以上'
    END AS age_group,
    COUNT(*) AS count
FROM 
    employees
GROUP BY 
    age_group;

以上代码将根据员工的年龄划分不同的年龄段,并统计每个年龄段的人数。结果将以age_group为一列返回,并以年龄段进行分组。

示例3:计算订单总额和折扣后的总额

假设我们有一个orders表,其中包含订单的订单号、订单总额和折扣率。我们想要计算订单总额和折扣后的总额,并将结果保存在名为total_amount的列中。

SELECT 
    order_number,
    order_amount,
    CASE
        WHEN discount_rate IS NULL THEN order_amount
        ELSE order_amount * (1 - discount_rate)
    END AS total_amount
FROM 
    orders;

以上代码将根据折扣率动态计算折扣后的总额。如果折扣率为空,则返回原始订单总额,否则根据折扣率计算折扣后的总额。

小结

CASE WHEN语句在MySQL数据库中是一种非常有用的条件表达式。我们可以根据不同的条件执行不同的操作或返回不同的结果。在本篇文章中,我们介绍了CASE WHEN语句的基本语法,并通过示例代码进行了解释和演示。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程