case when

case when

select name,age,
case
when(age>60) then '老同学'
when(20<age<=60) then '年轻'
when(age<=20) then '小同学'
else '小同学'
end age_level
 from student
 order by name desc

当年龄为18时 输出是年轻 为什么? 整体SQL执行流程是什么?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小尤 2023-08-09 09:51:29

同学你好 ,1、根据查询到数据在case...when....else中进行判断,case...when....else用于选择判断,只返回第一个符合条件的值,并是从上往下进行执行。当符合条件时就结束判断。

2、当年龄为18时 输出是年轻 是因  when(20<age<=60) then '年轻'  语句,此时在解析时when(20<age<=60) 解析为or(或)所以当age小于60的都会输出年轻。此时同学可以调整SQL为and(与)when(20<age and age<=60) 

select name,age,
case
when(age>60) then '老同学'
when(20<age and age<=60) then '年轻'
when(age<=20) then '小同学'
else '小同学'
end age_level
 from student
 order by name desc

祝学习愉快!

  • 提问者 zhuokeke #1
    select name,age,
    case
    when(age>60) then '老同学'
    when(age>20 ) then '年轻'
    else '小同学'
    end age_level
     from student
     order by name desc

    这样写岂不是更好 相当于if  else if......else 

    2023-08-09 11:06:19
  • 好帮手慕小尤 回复 提问者 zhuokeke #2

    同学你好,实现方式有很多,同学这么写也是可以的。

    祝学习愉快!

    2023-08-09 11:27:32
  • 提问者 zhuokeke 回复 好帮手慕小尤 #3

    实现方式有很多 还有其他更好的方式吗 麻烦说一下

    2023-08-09 15:25:54
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
Java工程师 2024版
  • 参与学习       2020    人
  • 提交作业       1249    份
  • 解答问题       1203    个

2024重磅革新,超百小时内容豪华升级,加速提升高级技能与高薪就业竞争力 课程紧贴企业最新人才需求,历经7年持续迭代,帮助万名学子入行转行 从零起点到高阶实战,学习路径稳健顺滑,成就从小白到工程师高薪

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师