当前位置:   article > 正文

MySQL中Case When用法详解_mysql8 case when

mysql8 case when

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

一、学生课程成绩统计

1)建表


  
  
  1. use hiveDemo;
  2. CREATE TABLE `course` (
  3. `id` int,
  4. `sid` int ,
  5. `course` string,
  6. `score` int
  7. ) ;
  • 1

 2)插入数据


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

3)需求

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

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

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


  
  
  1. create view tmp_course_view as
  2. select sid, case course when "shuxue" then score else 0 end as shuxue,
  3. case course when "yuwen" then score else 0 end as yuwen from course;
  4. select * from tmp_course_view;
  • 1
 

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


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

  c.比较结果

select * from tmp_course_view1 where shuxue > yuwen;
  
  
  • 1

二、Case When Else End用法详解

 1)更新


  
  
  1. update table
  2. set 字段 1= case
  3. when 条件 1 then1
  4. when 条件 2 then2
  5. else3
  6. end
  7. where ……
  • 1

2)查询


  
  
  1. select 字段 1, 字段 2,
  2. case 字段 3
  3. when1 then 新值
  4. when2 then 新值
  5. end as 重新命名字段 3的名字
  6. from table
  7. where ……
  8. order by ……
  • 1

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


  
  
  1. sql 中 case when 语法在这里添加日志标题 - 钱途无梁 - Notebook of 钱途无梁 SELECT <myColumnSpec> =
  2. sqlcase when 语法在这里添加日志标题 - 钱途无梁 - Notebook of 钱途无梁 CASE
  3. sqlcase when 语法在这里添加日志标题 - 钱途无梁 - Notebook of 钱途无梁 WHEN <A> THEN <somethingA>
  4. sqlcase when 语法在这里添加日志标题 - 钱途无梁 - Notebook of 钱途无梁 WHEN <B> THEN <somethingB>
  5. sqlcase when 语法在这里添加日志标题 - 钱途无梁 - Notebook of 钱途无梁 ELSE <somethingE>
  6. sqlcase when 语法在这里添加日志标题 - 钱途无梁 - Notebook of 钱途无梁 END
  • 1
CASE可能是 SQL 中被误用最多的关键字之一。虽然你可能以前用过这个关键字来创建字段,但是它还具有更多用法。例如,你可以在 WHERE、GROUP BY和Order By子句中使用CASE。

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/485229
推荐阅读
相关标签
  

闽ICP备14008679号