SQL中的CASE WHEN 语法

本文详细介绍了SQL中的CASE WHEN语句,包括语法格式和说明。CASE语句用于根据不同的条件执行不同的操作,适用于多条件判断场景。此外,文章通过一个实例展示了如何利用CASE WHEN在多表查询中区分并显示不同科目的成绩。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、语法说明

1、语法格式

2、说明

二、实例说明

1、需求说明

2、需求分析

3、代码编写

4、结果展示


一、语法说明

1、语法格式

CASE WHEN 条件1 THEN 执行语句1 
    [WHEN 条件2 THEN 执行语句2]
    ...
    ELSE 默认执行语句
END

2、说明

  • CASE语句会根据WHEN后面跟的条件的不同而执行不同的THEN语句,满足条件1则执行执行语句1。而WHEN语句是可以写多条的,如果判断的种类比较多,就可以写多条WHEN,相应的THEN语句也要和WHEN的数量保持一致。最后如果WHEN的条件都不满足,则会执行ELSE后的语句。
  • 条件语句是返回布尔语句的条件判断,当判断为true时执行THEN后的语句
  • THEN后面的执行语句的类型要与ELSE之后的保持一致
  • 最后的END表示CASE 语句结束

二、实例说明

1、需求说明

当前有两张数据表,分别为student表和exam表,数据如下

 

现在要列出每位学生的各科成绩,要求输出格式:姓名、学号、语文成绩、数学成绩、英语成绩,SQL怎么编写?

2、需求分析

姓名,学号字段来自student表,成绩字段来自exam表,所以需要两表关联

由于需要列出每一位学生的信息,所以student表为左连接的主表

在exam表中只有一列是关于成绩的字段,而最后结果却有三列时成绩,而且区分不同的科目的成绩,所以可以使用case when语句来区分

3、代码编写

SELECT 
	student.name 姓名
	,student.code 学号
	,CASE WHEN exam.subject="语文" THEN exam.score ELSE "" END 语文成绩
	,CASE WHEN exam.subject="数学" THEN exam.score ELSE "" END 数学成绩
	,CASE WHEN exam.subject="英语" THEN exam.score ELSE "" END 英语成绩
FROM
	student
LEFT JOIN
	exam
ON
	student.code=exam.code;

 

4、结果展示

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值