- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
mysqllimit加判断条件_ 【195期】MySQL中的条件判断函数
CASEWHEN、I。。。
点击上⽅“Java⾯试题精选”,关注公众号
⾯试刷图,查缺补漏
号外:往期⾯试题,10篇为⼀个单位归置到本公众号菜单栏-⾯试题,有需要的欢迎翻阅
阶段汇总集合:001期~180期汇总,⽅便阅读(增加设计模式)
前⾔
在众多SQL中,统计型SQL绝对是让⼈头疼的⼀类,之所以如此,是因为这种SQL中必然有⼤量的判读对⽐。⽽条件判断函数就是应对这
类需求的利器。本⽂重点总结CASE WHEN、IF、IFNULL三种函数。
1 CASE WHEN
Case when语句能在SQL语句中织⼊判断逻辑,类似于Java中的if else语句。
CASE WHEN语句分为简单函数和条件表达式。
1、简单函数
CASE 字段 WHEN 预期值 THEN 结果1 ELSE 结果2 END
如果字段值等于预期值,则返回结果1,否则返回结果2。
下⾯通过⼀个简单的⽰例来看⼀下具体⽤法。
表score:
场景 :在score表中,sex为1表⽰男性,sex=0表⽰⼥性,查询时转换成汉字显⽰。
SQL语句:
SELECT name,(CASE sex WHEN 0 THEN ⼥ ELSE 男 END) sex FROM score
结果: 2、条件表达式
CASE的简单函数使⽤简便,但⽆法应对较为复杂的场景,这就需要⽤到条件表达式了,其语法结构如下 :
CASE
WHEN condition THEN result1 ELSE result2
END
解释⼀下,语句中的condition是条件判断,如果该判断结果为true,那么CASE语句将返回result,否则返回result2,如果没有ELSE,则
返回null。CASE与END之间可以有多个WHEN…THEN…ELSE语句。END表⽰CASE语句结束。
场景:score ⼤于等于90为优秀,80-90为良好,60-80为及格,⼩于60为不及格,⽤SQL语句统计出每个学⽣的成绩级别。
SQL:
SELECT name,score,(CASE
WHEN score=90 THEN 优秀
WHEN score=80 THEN 良好
WHEN score=60 THEN 及格
ELSE 不及格 END) level
FROM score
结果: 3、综合使⽤
CASE WHEN 和 聚合函数综合使⽤,能实现更加复杂的统计功能。往期⾯试题:001期~180期汇总
先看第1个场景
在下表score(sex=1为男,sex=0为⼥)中,统计有多少个男⽣和⼥⽣以及男⼥⽣及格的各有多少个。
SQL:
SELECT
SUM(CASE WHEN sex=0 THEN 1 ELSE 0 END) AS ⼥⽣⼈数,
SUM(CASE WHEN sex=1 THEN 1 ELSE 0 END) AS 男⽣⼈数,
SUM(CASE WHEN score=60 AND sex=0 THEN 1 ELSE 0 END) 男⽣及格⼈数,
SUM(CASE WHEN score=60 AND sex=1 THEN 1 ELSE 0 END) ⼥⽣及格⼈数
FROM score;
结果:
再看第2个场景
将上⾯的score表转换为下⾯形式:
SQL:
SELECT
name,
MAX(CASE course WHEN 语⽂ THEN score ELSE 0 END) AS 语⽂,
max(CASE course WHEN 数学 THEN score ELSE 0 END) AS 数学,
max(CASE course WHEN 英语 THEN score ELSE 0 END) AS 英语,
AVG(score) AS 平均成绩
FROM score GROUP BY name;
结果如下:
2 IF
IF函数也能通过判断条件来返回特定值,它的语法如下:
IF(expr,result_true,result_false)
expr是⼀个条件表达式,如果结果为true,则返回result_true,否则返回res
原创力文档


文档评论(0)