摘要:MySQL触发器里的流程控制语句的 CASE WHEN 的语法有两种:一、简单函数CASE [col_name] WHEN [value1] THEN [result1] ELSE [default] END举个例子:...
MySQL触发器里的流程控制语句的 CASE WHEN 的语法有两种:
一、简单函数
CASE [col_name] WHEN [value1] THEN [result1] ELSE [default] END
举个例子:
SELECT `groupid`, `status`, CASE WHEN groupid = '1' THEN '初来乍到' WHEN groupid = '2' THEN '新手上路' WHEN groupid = '3' THEN '融会贯通' ELSE '未知' END AS groupname, CASE WHEN `status` = '1' THEN '正常' ELSE '未通过' END AS status_name FROM yzm_member LIMIT 20
二、搜索函数
CASE WHEN [expr] THEN [result1] ELSE [default] END
搜索函数可以写判断,并且搜索函数只会返回第一个符合条件的值,符合条件的值也可以是表的字段,其他case被忽略,举个例子:
SELECT `groupid`, `status`, CASE WHEN groupid < '3' THEN '新手' ELSE '高级' END AS groupname, CASE WHEN `status` = '1' THEN '正常' ELSE '未通过' END AS status_name FROM yzm_member LIMIT 20
搜索函数与聚合函数结合使用,举个例子:
#1.查询出每门课程的及格人数和不及格人数
SELECT 课程号, sum(case when 成绩 >= 60 then 1 else 0 end) as 及格人数, sum(case when 成绩 < 60 then 1 else 0 end) as 不及格人数 FROM score GROUP BY 课程号;
#2.简单函数,实现行列互换
SELECT 学号, max(case 课程号 when '0001' THEN 成绩 else 0 END) as `课程0001`, max(case 课程号 when '0002' THEN 成绩 else 0 END) as `课程0002`, max(case 课程号 when '0003' THEN 成绩 else 0 END) as `课程0003` FROM score GROUP BY 学号
网友评论:
long time no see
2021-09-19 23:08:46 回复
网友评论:
现在是深夜11点,越是夜深人静的时候,想的越明白,很受用
2021-09-19 23:06:08 回复