一、MySQL case when的三种用法:


1.case 字段 when, 字段的具体值;

  1. select a.*,
  2. case sex
  3. when '1' then '男'
  4. else '女'
  5. end as '性别'
  6. FROM table_sex a;

2.case when 字段,可对字段进行取值范围设置;

  1. SELECT a.*,
  2. CASE
  3. WHEN a.age BETWEEN 0 and 20 THEN '青年'
  4. WHEN a.age BETWEEN 20 and 40 THEN '中年'
  5. ELSE '非人类'
  6. END AS '描述'
  7. FROM table_c a;

3.case when 字段1,字段2,可对多个字段进行取值映射;

  1. SELECT a.*,
  2. CASE
  3. WHEN a.age BETWEEN 20 and 80 THEN '青年'
  4. WHEN a.name ='流浪' THEN '帅气'
  5. END AS '描述'
  6. FROM table_cc a

注:如果两个条件都针对一个字段的话,会显示第一个when的值。


二、具体解释:

  1. SELECT
  2. case -------------如果
  3.   when sex='' then '男' -------------sex='1',则返回值'男'
  4.   when sex='' then '女' -------------sex='2',则返回值'女'
  5.    else 0 -------------其他的返回'其他’
  6. end -------------结束
  7. from sys_user --------整体理解: 在sys_user表中如果sex='1',则返回值''如果sex='2',则返回值'' 否则返回'其他’

三、例子

有员工表如下:

  1. empinfo (
  2.   Fempno varchar2(10) not null pk,
  3.   Fempname varchar2(20) not null,
  4.   Fage number not null,
  5.   Fsalary number not null
  6. );

假如数据量很大约1000万条;

写一个你认为最高效的SQL,用一个SQL计算以下四种人:

  • fsalary>9999 and fage > 35
  • fsalary>9999 and fage < 35
  • fsalary <9999 and fage > 35
  • fsalary <9999 and fage < 35

每种员工的数量

  1. SELECT
  2. SUM(CASE WHEN fsalary > 9999 AND fage > 35 THEN 1 ELSE 0 END)
  3. AS "fsalary>9999_fage>35",
  4. SUM(CASE WHEN fsalary > 9999 AND fage < 35 THEN 1 ELSE 0 END)
  5. AS "fsalary>9999_fage<35",
  6. SUM(CASE WHEN fsalary < 9999 AND fage > 35 THEN 1 ELSE 0 END)
  7. AS "fsalary<9999_fage>35",
  8. SUM(CASE WHEN fsalary < 9999 AND fage < 35 THEN 1 ELSE 0 END)
  9. AS "fsalary<9999_fage<35"
  10. FROM empinfo;

END 2018-05-16 14:30:48

MySQL学习笔记:case when的更多相关文章

  1. 数据库MySQL学习笔记高级篇

    数据库MySQL学习笔记高级篇 写在前面 学习链接:数据库 MySQL 视频教程全集 1. mysql的架构介绍 mysql简介 概述 高级Mysql 完整的mysql优化需要很深的功底,大公司甚至有 ...

  2. 一千行MySQL学习笔记 (转)

    出处:  一千行MySQL学习笔记 /* 启动MySQL */ net start mysql /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权 ...

  3. mysql basic operation,mysql总结,对mysql经常使用语句的详细总结,MySQL学习笔记

    mysql> select * from wifi_data where dev_id like "0023-AABBCCCCBBAA" ; 1.显示数据库列表.show d ...

  4. Mysql学习笔记(三)对表数据的增删改查。

    正文内容. 这一部分是最简单的,也是最麻烦的.简单是因为其实只包括增删该插四个部分.大体上看,增加数据.删除数据.修改数据.查询数据都不麻烦啊,我们日常都是常用的.这个谁不会呢?以前在培训机构学mys ...

  5. MySQL学习笔记一

    MySQL 学习笔记 一 一.数据库简单介绍 1. 按照数据库的发展时间顺序,主要出现了以下类型数据库系统: Ø 网状型数据库 Ø 层次型数据库 Ø 关系型数据库 Ø 面向对象数据库 上面4中数据库系 ...

  6. Mysql学习笔记(二)数据类型 补充

    原文:Mysql学习笔记(二)数据类型 补充 PS:简单的补充一下数据类型里的String类型以及列类型... 学习内容: 1.String类型 2.列类型存储需求 String类型: i.char与 ...

  7. Mysql学习笔记(一)数据类型

    原文:Mysql学习笔记(一)数据类型 学习内容: Mysql基本数据类型. 1.数字类型.. i.整型     Mysql数据类型             含义(有符号)     tinyint(m ...

  8. 初识mysql学习笔记

    使用VMVirtualBox导入Ubuntu后,可以通过sudo apt-get install mysql-server命令下载mysql. 在学习过程中,我遇到了连接不上Xshell的问题.最终在 ...

  9. MySQL学习笔记-锁相关话题

    在事务相关话题中,已经提到事务隔离性依靠锁机制实现的.在本篇中围绕着InnoDB与MyISAM锁机制的不同展开,进而描述锁的实现方式,多种锁的概念,以及死锁产生的原因.   Mysql常用存储引擎的锁 ...

  10. MySQL学习笔记-事务相关话题

    事务机制 事务(Transaction)是数据库区别于文件系统的重要特性之一.事务会把数据库从一种一致状态转换为另一个种一致状态.在数据库提交工作时,可以确保其要么所有修改都已经保存了,要么所有修改都 ...

随机推荐

  1. R语言 神经网络算法

    人工神经网络(ANN),简称神经网络,是一种模仿生物神经网络的结构和功能的数学模型或计算模型.神经网络由大量的人工神经元联结进行计算.大多数情况下人工神经网络能在外界信息的基础上改变内部结构,是一种自 ...

  2. linux常见故障一:linux 文件系统变只读

    1. 重启系统看是否可以自动修复. 2. 使用fsck -y /dev/sda1 进行自动修复.(用”-y”选项来执行该命令对硬盘进行检查和修复)   添加参数:fsck -y -C -t ext3 ...

  3. linux 命令操作记录

    1.查找名为 migrations 的文件夹/文件,并删除 find . -name "migrations" -type d #查找当前目录下文件夹名为 migrations 的 ...

  4. html5页面头部

    <base href="/bulid/"/> <meta charset="UTF-8"/> <meta http-equiv=& ...

  5. centos7 install python3.7 with problem and how to fix it.

    问题如下: configure: error: no acceptable C compiler found in $PATH 缺少gcc zipimport.ZipImportError: can’ ...

  6. codevs 3327 选择数字

    3327 选择数字  时间限制: 1 s  空间限制: 256000 KB 题目描述 Description 给定一行n个非负整数a[1]..a[n].现在你可以选择其中若干个数,但不能有超过k个连续 ...

  7. ZeroMQ API(三) 消息

    1.初始化消息 1.1 zmq_msg_init(3) 1.1.1 名称 zmq_msg_init - 初始化空的ZMQ消息 1.1.2 概要 int zmq_msg_init(zmq_msg_t * ...

  8. Machine Learning Trick of the Day (2): Gaussian Integral Trick

    Machine Learning Trick of the Day (2): Gaussian Integral Trick Today's trick, the Gaussian integral ...

  9. .Net多线程之线程安全

    ConcurrentDictionary是.net4.0推出的一套线程安全集合里的其中一个,和它一起被发行的还有ConcurrentStack,ConcurrentQueue等类型,它们的单线程版本( ...

  10. Elasticsearch技术解析与实战(四)shard&replica机制

    序言 shard&replica机制 1.index包含多个shard 2.每个shard都是一个最小工作单元,承载部分数据,lucene实例,完整的建立索引和处理请求的能力 3.增减节点时, ...