mysql 解释字段,case…END语句

一、解释字段

  • 对查询结果的解释分析(无解释,不查询)
  • 在select执行之前,在临时表动态生成一个列;列中内容用于对临时表每一行数据进行解释分析;
  • 解释数据来源:
    1、来源于聚合函数
    2、来源于独立子查询
    3、来源于开发人员手动设置常量
    4、来源于case…END语句

二、case…END 语句

  • 目的是为临时表的每一行数据给出一个动态的分析结果;
  • 1、case…END在select执行之前执行
  • 2、case…END执行时遍历临时表的每一行数据,在遍历时为每一行数据提供一个动态解释内容
  • 3、case…END执行完毕时,生成解释数据作为一个独立的列出现在临时表

1、case…END 区间判断

类似于if() ELSE if() ELSE :格式
SELECT (case
when 区间判断 then ‘解释数据’
when 区间判断 then ‘解释数据’
ELSE … END) AS 列名 FROM TABLE
例子:

SELECT doc_no, use_work_hour, (SELECT AVG(use_work_hour) FROM dispatch_list) AS avg_hour, (case 
when use_work_hour<(SELECT AVG(use_work_hour) FROM dispatch_list) then '小于平均工时' 
when use_work_hour>(SELECT AVG(use_work_hour) FROM dispatch_list) then '大于平均工时'
ELSE '等于平均工时' END ) AS 等级 FROM dispatch_list;

在这里插入图片描述

2、case…END 等值判断

类似于switch;格式:
SELECT (case 字段名称
when 值 then ‘解释数据’
when 值 then ‘解释数据’
ELSE … END) AS 列名 FROM TABLE

SELECT doc_no, use_work_hour, (case use_work_hour 
	when 2.2 then '2.2' 
	when 0.0 then '0.0'
	ELSE '其他' END ) AS 等级 FROM dispatch_list;

在这里插入图片描述