【大数据系列之MySQL】(十九):MySQL中case语句使用方法

MySQL中存在Java语言一样的流程控制函数case,用来控制多分支输出问题,但是具体写法不太一样,case结构在MySQL中定义如下:

1.switch结构

case 要判断的字段或表达式
when 常量1 要显示的值或语句;
when 常量2 要显示的值或语句;
...
else 要显示的值或语句;(相当于default)
end

对于when语句来讲,如果后面的是表达式或者常量值不需要写分号,如果是语句需要在结尾加分号

案例:查询员工的工资,要求如下:

部门号=30,显示的工资为1.1倍

部门号=40,显示的工资为1.2倍

部门号=50,显示的工资为1.3倍

其他部门,显示的工资为原工资

SELECT
	salary AS 原始工资,
	department_id,
CASE
		department_id 
		WHEN 30 THEN
		salary * 1.1 
		WHEN 40 THEN
		salary * 1.2 
		WHEN 50 THEN
		salary * 1.3 ELSE salary 
	END AS 新工资 
FROM
	employees;

image-20221217200342255

2.实现多分支if

同时case还可以实现if多分支结构,结构如下,和上面的结构不大相同,上面的就是switch结构,下面的是实现多if分支:

case
when 条件1 要显示的值或语句;
when 条件2 要显示的值或语句;
...
else 要显示的值或语句;
end

案例:查询员工的工资的情况

如果工资>20000,显示A级别

如果工资>15000,显示B级别

如果工资>10000,显示C级别

否则,显示D级别

SELECT
	salary,
CASE
		
		WHEN salary > 20000 THEN
		'A' 
		WHEN salary > 15000 THEN
		'B' 
		WHEN salary > 10000 THEN
		'C' ELSE 'D' 
	END AS 工资级别 
FROM
	employees;

image-20221217201129117

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
MySQL Case When 语句可以实现多条件查询的功能,比如可以根据不同的条件对查询结果进行分类,根据分类结果对数据进行汇总、计数或统计等操作。 Case When 语句的基本语法如下: ``` select case [when condition1 then result1] [when condition2 then result2] [when condition3 then result3] ... [else default_result] end from table_name; ``` 其,when 后的条件可以是表达式、逻辑运算符、比较运算符等,如果 condition1 结果为 true,就返回 result1,否则继续判断 condition2,以此类推。 比如,如果有这样一张用户表,其包含了用户的姓名、性别、年龄、所在城市等信息: ``` CREATE TABLE users ( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(50) NOT NULL, gender ENUM('male', 'female') NOT NULL, age INT NOT NULL, city VARCHAR(50) NOT NULL, PRIMARY KEY (id) ); INSERT INTO users (name, gender, age, city) VALUES ('Tom', 'male', 26, 'Beijing'), ('Lily', 'female', 23, 'Shanghai'), ('Mary', 'female', 32, 'Shenzhen'), ('Jack', 'male', 38, 'Guangzhou'), ('Lucy', 'female', 24, 'Hangzhou'), ('David', 'male', 29, 'Shanghai'), ('Emma', 'female', 27, 'Beijing'), ('Mike', 'male', 31, 'Guangzhou'), ('Ella', 'female', 28, 'Shenzhen'), ('John', 'male', 36, 'Hangzhou'); ``` 我们可以使用 Case When 语句对用户数据进行分类,比如按照性别进行分类: ``` SELECT gender, COUNT(*) AS count FROM users GROUP BY gender ORDER BY CASE WHEN gender='male' THEN 1 WHEN gender='female' THEN 2 ELSE 3 END; -- 输出结果如下: -- gender count -- male 4 -- female 6 ``` 这里用 Case When 语句对性别进行分类,count 统计每种分类的数量,同时使用 order by 指定分类的顺序。 除了精确匹配外,Case When 语句还可以使用 like 或 in 等条件表达式进行模糊匹配,比如按照年龄段进行分类: ``` SELECT CASE WHEN age < 20 THEN '少年' WHEN age BETWEEN 20 AND 30 THEN '青年' WHEN age BETWEEN 30 AND 40 THEN '年' ELSE '老年' END AS age_group, COUNT(*) AS count FROM users GROUP BY age_group; -- 输出结果如下: -- age_group count -- 青年 4 -- 年 3 -- 老年 3 ``` 这里将用户按照年龄段进行分类,count 统计每种分类的数量,同时使用 as 将分类结果命名为 age_group。 Case When 语句可以灵活地使用在各种查询场景,比如我们可以根据不同的条件返回不同的文本、数值或日期格式,也可以从多个字段派生出新的字段等。需要注意的是,Case When 语句也需要谨慎使用,因为过多的分支会降低查询性能,建议根据实际需求进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海洋 之心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值