MySQL CASE 语句
在MySQL数据库中,CASE
语句是一种灵活的条件判断语句,可以根据条件决定返回不同的结果。这种语句通常用于在SELECT
语句中根据不同的条件返回不同的值。
语法
CASE
语句可以有两种形式:simple CASE
和searched CASE
。
Simple CASE
Simple CASE
表达式会比较一个表达式和多个简单表达式,然后根据它们之间的相等性返回一个结果表达式。其语法如下:
CASE case_expression
WHEN when_expression THEN result_expression
[WHEN when_expression THEN result_expression ...]
[ELSE else_result_expression]
END
在这里,case_expression
是要比较的值,when_expression
是要比较的表达式,result_expression
是匹配时返回的值,else_result_expression
是当没有匹配项时返回的值。
Searched CASE
Searched CASE
表达式会逐个评估一组条件,并在第一个条件评估为TRUE
的时候返回一个结果表达式。其语法如下:
CASE
WHEN condition THEN result_expression
[WHEN condition THEN result_expression ...]
[ELSE else_result_expression]
END
在这里,condition
是一个要评估的条件,result_expression
是匹配时返回的值,else_result_expression
是当没有匹配项时返回的值。
示例
接下来,我们将通过实际的示例来演示CASE
语句的使用。
创建测试表
首先,我们创建一个名为employees
的测试表,用于存储员工的基本信息:
CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(50),
department VARCHAR(50),
salary INT
);
INSERT INTO employees VALUES
(1, 'Alice', 'HR', 5000),
(2, 'Bob', 'IT', 6000),
(3, 'Charlie', 'Finance', 7000),
(4, 'David', 'HR', 5500),
(5, 'Eve', 'IT', 6500),
(6, 'Frank', 'Finance', 7500);
使用 Simple CASE
现在,假设我们要根据员工的工资水平来分类他们的级别(高、中、低)。我们可以使用Simple CASE
来实现:
SELECT name,
salary,
CASE
WHEN salary > 7000 THEN '高级'
WHEN salary > 6000 THEN '中级'
ELSE '初级'
END AS level
FROM employees;
上面的查询根据员工的工资水平将他们分为高级、中级和初级三个级别,可以看到不同员工的级别已经被正确分类。
使用 Searched CASE
除了上面的示例,我们还可以使用Searched CASE
对员工进行更加复杂的分类,比如根据部门和工资水平来确定他们的职务:
SELECT name,
department,
salary,
CASE
WHEN department = 'IT' AND salary > 6000 THEN '高级工程师'
WHEN department = 'IT' THEN '工程师'
WHEN department = 'HR' THEN '人力资源'
ELSE '财务部'
END AS title
FROM employees;
上面的查询根据员工的部门和工资水平确定了他们的职务,可以看到不同员工的职务已经被正确分类。
总结
CASE
语句是MySQL中灵活且强大的条件判断语句,可以根据不同的条件返回不同的结果。通过本文的介绍和示例,相信读者已经对CASE
语句有了更深入的了解,可以灵活地运用在实际的数据库查询中。