17370845950

case条件表达式在mysql中如何使用
CASE表达式在MySQL中有两种形式:简单CASE和搜索型CASE,分别用于值匹配和条件判断,可应用于SELECT、UPDATE、ORDER BY等语句中,提升SQL逻辑性与灵活性,需以END结尾,推荐使用ELSE处理默认情况。

CASE 条件表达式在 MySQL 中用于实现类似编程语言中的条件判断功能,可以根据不同的条件返回不同的值。它常用于 SELECT、UPDATE、WHERE 等语句中,让查询更灵活。MySQL 支持两种形式的 CASE 表达式:简单 CASE 和搜索型 CASE。

简单 CASE 表达式

这种形式将一个表达式与多个可能的值进行比较,类似于 switch-case 结构。

语法:

CASE value
    WHEN compare_value1 THEN result1
    WHEN compare_value2 THEN result2
    ...
    ELSE default_result
END

示例:根据员工职位显示对应的中文称呼。

SELECT name,
    CASE job
        WHEN 'manager' THEN '经理'
        WHEN 'developer' THEN '开发'
        WHEN 'designer' THEN '设计'
        ELSE '未知'
    END AS job_zh
FROM employees;

搜索型 CASE 表达式

这种形式更灵活,允许使用任意条件判断,类似于 if-else if-else 结构。

语法:

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

示例:根据学生成绩划分等级。

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

在其他语句中使用 CASE

CASE 不仅可用于 SELECT,也可用于 UPDATE 或 ORDER BY 中。

示例:用 CASE 更新数据

UPDATE products
SET status =
    CASE
        WHEN stock > 0 THEN '有货'
        ELSE '缺货'
    END;

示例:用 CASE 控制排序优先级

SELECT name, role
FROM users
ORDER BY
    CASE role
        WHEN 'admin' THEN 1
        WHEN 'editor' THEN 2
        ELSE 3
    END;

基本上就这些。掌握这两种 CASE 写法,能让你的 SQL 更具逻辑性和可读性。注意每个 CASE 必须以 END 结尾,ELSE 可选但推荐加上以防遗漏情况。