mysql中的case函数
线下笔试中碰到了一个根据成绩在查询结果中新增一列显示ABCD等级这个需求,当时忘记了case when的用法。
case函数
CASE expr WHEN v1 THEN r1 [WHEN v2 THEN r2] [ELSE rn] END
该函数表示,若expr值等于某个vn,则返回对应位置THEN后面的结果;若与所有值都不想等,则返回ELSE后面的rn。
使用 CASE value WHEN语句执行分支操作,输入语句如下:
select case 2 when 1 then 'one' when 2 then 'two' else 'more' end;
CASE后面的值为2,与第二条分支语句WHEN后面的值相等,因此返回结果为"two"。
CASE WHEN v1 THEN r1 [WHEN v2 THEN r2] [ELSE rn] END
该函数表示,若某个vn值为TRUE,则返回对应位置THEN后面的结果;若所有值都不为TRUE,则返回ELSE后的rn。
使用CASE WHEN语句执行分支操作,输入语句如下:
由于1<0的结果为FALSE,因此函数返回值为ELSE后面的"false"。
笔试题回顾
当时是个学生表和成绩表的连表查询SQL,具体题目已经忘了,不过我使用下面这个表结构效果也是一样的,本质都是根据数字打分。
比如说下面这张表
我现在要根据年龄进行等级划分:
- 当age>25,level=A
- 当age>22 and age<=25,level=B
- 否则level=C
SQL如下:
select s.id,s.sno,s.name,s.age,s.classId,
case
when s.age>25 then 'A'
when s.age>22 and s.age<=25 then 'B'
else 'C'
end as level
from student s
本文作者: 别团等shy哥发育
版权声明: https://www.codeleader.top/ 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果