SQL-基础语法 - 条件分支
条件分支 case when
是 SQL 中用于根据条件进行分支处理的语法。它类似于其他编程语言中的 if else
条件判断语句,允许我们根据不同的条件选择不同的结果返回。
使用 case when
可以在查询结果中根据特定的条件动态生成新的列或对现有的列进行转换。
举个例子:假设你是一位餐厅的服务员,客人点了不同的菜品,而你需要根据客人点的菜来确定服务的方式。如果客人点了鱼,你会用餐具和服务方式适合吃鱼的方式来招待他们;如果客人点了牛排,你会用适合牛排的餐具和服务方式。case when
就像你根据客人点的菜品来选择不同服务方式的过程。
示例
假设有一个学生表 student,包含以下字段:name(姓名)、age(年龄)。数据如下:
name | age |
---|---|
小明 | 18 |
鸡哥 | 25 |
李华 | 30 |
王五 | 40 |
使用条件分支 case when ,根据 name 来判断学生是否会说 RAP,并起别名为 can_rap。
示例 SQL 如下:
SELECT name, CASE WHEN (name = '鸡哥') THEN '会' ELSE '不会' END AS can_rap FROM student
查询结果:
name | can_rap |
---|---|
小明 | 不会 |
鸡哥 | 会 |
李华 | 不会 |
王五 | 不会 |
case when
支持同时指定多个分支,示例语法如下:
CASE WHEN (条件1) THEN 结果1 WHEN (条件2) THEN 结果2 ... ELSE 其他结果 END
习题
假设有一个学生表 student,包含以下字段:name(姓名)、age(年龄)。请你编写一个 SQL 查询,将学生按照年龄划分为三个年龄等级(age_level):60 岁以上为 "老同学",20 岁以上(不包括 60 岁以上)为 "年轻",20 岁及以下、以及没有年龄信息为 "小同学"。
返回结果应包含学生的姓名(name)和年龄等级(age_level),并按姓名升序排序。
name | age |
---|---|
鸡哥 | 25 |
鱼皮 | 18 |
热dog | 40 |
摸FISH | |
李阿巴 | 19 |
老李 | 56 |
李变量 | 24 |
王加瓦 | 23 |
赵派森 | 80 |
孙加加 | 60 |
点击查看答案
SELECT
name,
CASE
WHEN (age > 60) THEN '老同学'
WHEN (age > 20) THEN '年轻'
ELSE '小同学'
END AS age_level
FROM
student
ORDER BY
name asc
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本