开发者

MySQL中Case When用法及说明

目录
  • 一、学生课程成绩统计
    • 1) 建表
    • 2) 插入数据
    • 3) 需求
  • 二、Case When Else End用法详解
    • 1) 更新
    • 2) 查询
  • 总结

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

    首先练习一个例子如下:

    一、学生课程成绩统计

    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);

    MySQL中Case When用法及说明

    3) 需求

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

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

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

    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;

     

    MySQL中Case When用法及说明

    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;

    MySQL中Case When用法及说明

    二、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, 字android段2,       
        case 字段3     
        when 值1 then 新值       
        when编程 值2 then 新值      
        end as 重新命名字段3的名字       
    from ta开发者_Mysqlble      
    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。

    总结

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

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新数据库

    数据库排行榜