• 技术文章 >数据库 >mysql教程

    mysql case语句怎么用?

    藏色散人藏色散人2020-09-15 10:05:45原创2327
    MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。

    那么其中mysql case语句怎么用?

    mysql case语句用法:

    结构:case when… then …end

    1.判断的同时改变其值

    eg:

    select OperatorAccount,
            case
         when CreateTime>'2016-02-14 16:24:42' then 'after'
             when CreateTime<'2016-02-14 16:24:42' then 'before'
             else 'now' end stage
    from log_login order by CreateTime DESC

    910fe696498deccf0c50f46c9d70345.png

    第二种写法

     SELECT CallerNumber, CASE IsLocal
             WHEN 0 THEN '外线'
              WHEN 1 THEN '内线' END
      FROM cdr

    c19efc176f306953a8a0a38b08983dd.png

    2.拆分一行为多列

    eg:

    SELECT SipAccount, COUNT(1) AS number,IsCheck
      FROM cdr
      GROUP BY SipAccount,IsCheck

    996ad76cb376d3ea4789d291b760190.png

    针对这个统计结果进行拆分(0表示未打分,1代表优秀,2代表合格,3代表不合格)

    最终结果如下:

    50aaa39d20f624a07948187c5f56695.png

    所以最终要用到行拆分成三列,语句如下

     SELECT SipAccount,
                  (CASE IsCheck WHEN 1 THEN number END) youxiu,
                  (CASE IsCheck WHEN 2 THEN number END) hege,
                  (CASE IsCheck WHEN 3 THEN number END) buhege
     FROM
              (SELECT SipAccount, COUNT(1) AS number,IsCheck
               FROM cdr
               GROUP BY SipAccount,IsCheck) AS a

    9030544020bcb49d43e964ff815bb6c.png

    现在结果是这样的,你会发现虽然拆成了三列,但是最终结果还不是自己需要的,接下来就需要根据sipaccount来分组的同时对结果进行处理了。语句如下:

     SELECT sipaccount,
            IF(MAX(youxiu) IS NULL,0, MAX(youxiu)) youxiu,
            IF(MAX(hege) IS NULL,0, MAX(hege)) hege,
            IF(MAX(buhege) IS NULL,0, MAX(buhege)) buhege
    FROM
            (SELECT SipAccount,
            (CASE IsCheck WHEN 1 THEN number END) youxiu,
            (CASE IsCheck WHEN 2 THEN number END) hege,
            (CASE IsCheck WHEN 3 THEN number END) buhege
            FROM
         (SELECT SipAccount, COUNT(1) AS number,IsCheck  FROM cdr  GROUP BY SipAccount,IsCheck) AS a) AS b
                        GROUP BY sipaccount

    9fb4db51ef042c80811fc9082cf9388.png

    最终得到了这个结果。正是我们需要的格式。

    以上就是mysql case语句怎么用?的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:mysql case语句
    上一篇:db2和mysql语法的区别是什么 下一篇:mysql-server是什么?
    千万级数据并发解决方案

    相关文章推荐

    • mysql怎么添加索引• sql server和mysql的区别是什么• access和mysql哪个有用?• mysql怎么结束语句?
    1/1

    PHP中文网