赞
踩
MySQL中存在Java语言一样的流程控制函数case,用来控制多分支输出问题,但是具体写法不太一样,case结构在MySQL中定义如下:
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;
同时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;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。