mysql case语句怎么用?


本文摘自PHP中文网,作者藏色散人,侵删。

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。

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

mysql case语句用法:

结构:case when… then …end

1.判断的同时改变其值

eg:

1

2

3

4

5

6

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

第二种写法

1

2

3

4

SELECT CallerNumber, CASE IsLocal

        WHEN 0 THEN '外线'

         WHEN 1 THEN '内线' END

 FROM cdr

c19efc176f306953a8a0a38b08983dd.png

2.拆分一行为多列

eg:

1

2

3

SELECT SipAccount, COUNT(1) AS number,IsCheck

  FROM cdr

  GROUP BY SipAccount,IsCheck

996ad76cb376d3ea4789d291b760190.png

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

最终结果如下:

50aaa39d20f624a07948187c5f56695.png

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

1

2

3

4

5

6

7

8

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来分组的同时对结果进行处理了。语句如下:

1

2

3

4

5

6

7

8

9

10

11

12

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语句怎么用?的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

图文详解navicat中如何使用命令创建数据库和表

mysql学习之数据库检索语句dql大全小白篇

mysql 如何搜索自增列

mysql命令行中文显示乱码怎么办

怎么样避免mysql死锁

mysql查看数据库命令是什么?

php连接mysql数据库三种实现方法

mysql的mvcc的用法介绍

mysql实现一对多查询的代码示例

mysql逻辑架构详解

更多相关阅读请进入《mysql》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...