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;
2.实现多分支if
同时case还可以实现if多分支结构,结构如下,和上面的结构不大相同,上面的就是switch结构,下面的是实现多if分支:
case when 条件1 要显示的值或语句; when 条件2 要显示的值或语句; ... else 要显示的值或语句;
案例:查询员工的工资的情况
如果工资>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;