zoukankan      html  css  js  c++  java
  • MYSQL case when 的用法

    前言:遇到这样一个需求,有一门成绩,成绩中只记录了学生的分数,现在需要统计学生的分数等级,100-90分为优秀,90-60分为及格,60-0分为不及格。这个需求就可以用CASE语句来表达。

    case语句分为简单case语句和可搜索case语句。

    1.简单case的语法为

    CASE  case_expression
       WHEN when_expression_1 THEN commands
       WHEN when_expression_2 THEN commands
       ...
       ELSE commands
    END

    这种适合固定的值,比如性别,1男,2女这种

    例子:将下图中sex换成汉字的性别,1男,2女。

    SELECT
        *, (
            CASE sex
            WHEN 1 THEN
                ''
            WHEN 2 THEN
                ''
            END
        ) '性别'
    FROM
        `user`

    结果如下图

    2.可搜索case语句,这种适应表达式与一组不同的值进行匹配。

    语法为

    CASE
        WHEN condition_1 THEN commands
        WHEN condition_2 THEN commands
        ...
        ELSE commands
    END

    例子就是最开始提到的

    SELECT
        *,
        (
            CASE
            WHEN  score>=90 THEN
                '优秀'
            WHEN score>=60 THEN
                '及格'
            ELSE
                '不及格'
            END
        ) '等级'
    FROM
        math
    ORDER BY score DESC

    结果如下

     还有是根据不同的值去更新数据

     需求是根据RelationResourceCode 前四位的值 更新RelationResourceType  的值

    BZWX--》standard
    JGGF--》specification
    DXAL--》case
    ZCFG--》policy
    ZSCT--》knowledgeitem

    语句如下:
    update   ResourceRelations  set RelationResourceType =
    
    (
            CASE left(RelationResourceCode,4)
            WHEN  'BZWX' THEN
                'standard'
            WHEN  'JGGF' THEN
                'specification'
                    WHEN  'DXAL' THEN
                'case'
                            
                    WHEN  'ZCFG' THEN
                'policy'
                            
                    WHEN  'ZSCT' THEN
                'knowledgeitem'
            END
        ) 

    结果如下

  • 相关阅读:
    金刚经与心经之比较
    ECMWF 和 GFS 模型
    LSTM之父Jürgen Schmidhuber评图灵
    STM32相关知识点
    最全C++11/14/17/20/23 的新特性代码案例
    C++ 在线工具
    如何在 Proteus 中设计 PCB
    STM32电源框图解析
    【新特性速递】填一个坑
    【新特性速递】表格加载速度足足 3 倍提升,爱了爱了
  • 原文地址:https://www.cnblogs.com/ningy1009/p/13672949.html
Copyright © 2011-2022 走看看