文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

MySQL中Case When用法及说明

2022-12-29 15:00

关注

最近,在学习Hive基础知识时,遇到了遇到了Case When Else End语法,以前学习MySQL时忽略了这部分知识点,现总结一下相关的知识给大家。

首先练习一个例子如下:

一、学生课程成绩统计

1) 建表

use hiveDemo;
CREATE TABLE `course` (
  `id` int,
  `sid` int ,
  `course` string,
  `score` int 
) ;

2) 插入数据

// 字段解释:id, 学号, 课程, 成绩
INSERT INTO `course` VALUES (1, 1, 'yuwen', 43);
INSERT INTO `course` VALUES (2, 1, 'shuxue', 55);
INSERT INTO `course` VALUES (3, 2, 'yuwen', 77);
INSERT INTO `course` VALUES (4, 2, 'shuxue', 88);
INSERT INTO `course` VALUES (5, 3, 'yuwen', 98);
INSERT INTO `course` VALUES (6, 3, 'shuxue', 65);

3) 需求

求:所有数学课程成绩 大于 语文课程成绩的学生的学号

最开始的想法是打算同过自连接的方式来解决,后来咨询了公司的同事,知道了可以case可以用来解决此问题。

a. 使用case...when...将不同的课程名称转换成不同的列。 

create view tmp_course_view as
select sid, case course when "shuxue" then score else 0 end  as shuxue,  
case course when "yuwen" then score else 0 end  as yuwen from course;  
 
select * from tmp_course_view;

 

b. 以sid分组合并取各成绩最大值

create view tmp_course_view1 as
select aa.sid, max(aa.shuxue) as shuxue, max(aa.yuwen) as yuwen from tmp_course_view aa group by sid;  
 
select * from tmp_course_view1;

c. 比较结果

select * from tmp_course_view1 where shuxue > yuwen;

二、Case When Else End用法详解

1) 更新

update table  
set 字段1=case     
    when 条件1 then 值1       
    when 条件2 then 值2      
    else 值3      
    end     
where    …… 

2) 查询

select 字段1, 字段2,       
    case 字段3     
    when 值1 then 新值       
    when 值2 then 新值      
    end as 重新命名字段3的名字       
from table      
where ……      
order by ……  

在一般的SELECT中,其语法如下:   

sql 中 case when 语法在这里添加日志 - 钱途无梁 - Notebook of 钱途无梁SELECT <myColumnSpec> = 
sql 中 case when 语法在这里添加日志 - 钱途无梁 - Notebook of 钱途无梁CASE 
sql 中 case when 语法在这里添加日志 - 钱途无梁 - Notebook of 钱途无梁WHEN <A> THEN <somethingA> 
sql 中 case when 语法在这里添加日志 - 钱途无梁 - Notebook of 钱途无梁WHEN <B> THEN <somethingB> 
sql 中 case when 语法在这里添加日志 - 钱途无梁 - Notebook of 钱途无梁ELSE <somethingE> 
sql 中 case when 语法在这里添加日志 - 钱途无梁 - Notebook of 钱途无梁END 

CASE可能是 SQL 中被误用最多的关键字之一。

虽然你可能以前用过这个关键字来创建字段,但是它还具有更多用法。

例如,你可以在 WHERE、GROUP BY和Order By子句中使用CASE。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯