mysql的case when如何用

发布时间:2022-08-02 09:39:42 作者:iii
来源:亿速云 阅读:281

MySQL的CASE WHEN如何用

在MySQL中,CASE WHEN语句是一种条件表达式,用于根据不同的条件返回不同的值。它类似于其他编程语言中的if-else语句,但更适用于SQL查询中的条件判断。CASE WHEN语句可以用于SELECTUPDATEDELETE等SQL语句中,帮助我们在查询或更新数据时进行复杂的条件判断。

本文将详细介绍CASE WHEN语句的语法、用法以及一些常见的应用场景。

1. CASE WHEN 的基本语法

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

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

1.1 简单示例

假设我们有一个students表,包含学生的姓名和成绩。我们想要根据成绩将学生分为“优秀”、“良好”、“及格”和“不及格”四个等级。可以使用CASE WHEN语句来实现:

SELECT 
    name,
    score,
    CASE
        WHEN score >= 90 THEN '优秀'
        WHEN score >= 80 THEN '良好'
        WHEN score >= 60 THEN '及格'
        ELSE '不及格'
    END AS grade
FROM students;

在这个例子中,CASE WHEN语句根据score字段的值返回不同的等级。

2. CASE WHEN 的两种形式

CASE WHEN语句有两种形式:简单形式和搜索形式。

2.1 简单形式

简单形式的CASE WHEN语句如下:

CASE expression
    WHEN value1 THEN result1
    WHEN value2 THEN result2
    ...
    ELSE resultN
END

在这种形式中,expression是一个表达式,value1, value2, … 是与expression进行比较的值。如果expression等于某个value,则返回对应的result

示例

假设我们有一个orders表,包含订单的状态(status字段)。我们想要将状态转换为更易读的描述:

SELECT 
    order_id,
    status,
    CASE status
        WHEN 'P' THEN 'Pending'
        WHEN 'S' THEN 'Shipped'
        WHEN 'D' THEN 'Delivered'
        ELSE 'Unknown'
    END AS status_description
FROM orders;

在这个例子中,CASE WHEN语句根据status字段的值返回不同的状态描述。

2.2 搜索形式

搜索形式的CASE WHEN语句如下:

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

在这种形式中,condition1, condition2, … 是布尔表达式,如果某个条件为真,则返回对应的result

示例

假设我们有一个employees表,包含员工的工资(salary字段)。我们想要根据工资范围将员工分为“高收入”、“中等收入”和“低收入”三类:

SELECT 
    employee_id,
    salary,
    CASE
        WHEN salary > 10000 THEN '高收入'
        WHEN salary BETWEEN 5000 AND 10000 THEN '中等收入'
        ELSE '低收入'
    END AS income_level
FROM employees;

在这个例子中,CASE WHEN语句根据salary字段的值返回不同的收入等级。

3. CASE WHEN 的常见应用场景

3.1 数据分类

CASE WHEN语句常用于对数据进行分类。例如,根据学生的成绩、员工的工资、订单的状态等字段进行分类。

3.2 数据转换

CASE WHEN语句还可以用于将数据从一种形式转换为另一种形式。例如,将订单的状态代码转换为更易读的描述,或者将性别字段从“M”和“F”转换为“男”和“女”。

3.3 条件更新

UPDATE语句中,CASE WHEN语句可以用于根据条件更新不同的字段值。例如,根据员工的工资水平调整其奖金:

UPDATE employees
SET bonus = CASE
    WHEN salary > 10000 THEN salary * 0.1
    WHEN salary BETWEEN 5000 AND 10000 THEN salary * 0.05
    ELSE 0
END;

在这个例子中,CASE WHEN语句根据员工的工资水平计算不同的奖金。

3.4 条件聚合

GROUP BY查询中,CASE WHEN语句可以用于条件聚合。例如,统计不同收入水平的员工数量:

SELECT 
    CASE
        WHEN salary > 10000 THEN '高收入'
        WHEN salary BETWEEN 5000 AND 10000 THEN '中等收入'
        ELSE '低收入'
    END AS income_level,
    COUNT(*) AS employee_count
FROM employees
GROUP BY income_level;

在这个例子中,CASE WHEN语句用于将员工按收入水平分类,然后统计每个类别的员工数量。

4. 注意事项

5. 总结

CASE WHEN语句是MySQL中非常强大的条件表达式工具,适用于各种复杂的条件判断场景。通过灵活使用CASE WHEN语句,我们可以在SQL查询中实现数据分类、数据转换、条件更新和条件聚合等功能。掌握CASE WHEN语句的使用,可以大大提高SQL查询的灵活性和效率。

希望本文对你理解和使用MySQL的CASE WHEN语句有所帮助!

推荐阅读:
  1. case when
  2. oracle case when的用法

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

mysql case when

上一篇:html5中可不可以有多个form

下一篇:如何解决1045无法登录mysql服务器

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》