表的创建

create table `lee` (

`id` int(10) not null auto_increment,

`name` char(20) default null,

`birthday` datetime default null,

primary key (`id`)) engine=innodb default charset=utf8

数据插入:

insert into lee(name,birthday) values ('sam','1990-01-01');

insert into lee(name,birthday) values ('lee','1980-01-01');

insert into lee(name,birthday) values ('john','1985-01-01');

第一种用法:

select name,

case when birthday < '1981' then 'old'

when birthday > '1988' then 'yong'

else 'ok' end yorn

from lee

第二种用法:

select name, case name

when 'sam' then 'yong'

when 'lee' then 'handsome'

else 'good' end as oldname

from lee

第三种:当然了,case when 语句还可以复合

select name, birthday,

case

when birthday > '1983' then 'yong'

when name='lee' then 'handsome'

else 'just so so' end

from lee;

在这里用sql语句进行日期比较的话,需要对年加引号,要不然可能结果和预期的结果不同,

当然也可以用year函数来实现

select name,

case when year(birthday) > 1988 then 'yong'

when year(birthday) < 1980 then 'old'

else 'ok' end

from lee;

==========================================================

create table penalties

(

paymentno integer not null,

payment_date date not null,

amount decimal(7,2) not null,

primary key(paymentno)

)

insert into penalties values(1,'2008-01-01',3.45);

insert into penalties values(2,'2009-01-01',50.45);

insert into penalties values(3,'2008-07-01',80.45);

第一题:对罚款登记分为三类,第一类low,包括大于0小于等于40的罚款,第二类moderate大于40到80之间的罚款,第三类high包含所有大于80的罚款

select payment_date, amount,

case

when amount >= 0 and amount < 40 then 'low'

when amount >=40 and amount < 80 then 'moderate'

when amount >=80 then 'high'

else 'null' end

from penalties

第二题:统计出属于low的罚款编号

select * from

( select paymentno, amount,

case

when amount >= 0 and amount < 40 then 'low'

when amount >=40 and amount < 80 then 'moderate'

when amount >=80 then 'high'

else 'incorrect' end lvl

from penalties) as p

where p.lvl = 'low'

ps:mysql,case when,case多个字段

select distinct a.patientid,a.patientcode,a.patientsex,a.mobileno,a.homephoneno,a.userage,a.patientname,a.patientidcard, date_format(a.registdate,'%y-%m-%d') as registdate,

case when b.usedstarttime is not null and b.usedendtime is null then '1'

when b.usedstarttime is not null and b.usedendtime is not null then '2'

end as 'usedstate'

from mets_v_patient_baseinfo a

left join mets_devices_used_history b on a.patientid = b.patientid

where (select ifnull(isdeleted,0) from userpublic_info where userid = a.patientid ) = 0

and 1=1

order by patientid desc limit 0,15

希望与广大网友互动??

点此进行留言吧!

mysql case then效率快_详解Mysql case then使用相关推荐

  1. mysql影响行数解析_详解MySQL的数据行和行溢出机制

    一.行 有哪些格式? 你可以像下面这样看一下你的mysql行格式设置. 其实mysql的数据行有两种格式,一种就是图中的 compact格式,还有一种是redundant格式. compact是一种紧 ...

  2. mysql如何查看事务日记_详解 Mysql 事务和Mysql 日志

    事务特性 1.原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节. 2.一致性(Consistency):事务开始前和结束后,数据库的完整性约束没有被破 ...

  3. mysql分区表truncate分区数据_详解MySQL分区表

    前言: 分区是一种表的设计模式,通俗地讲表分区是将一大表,根据条件分割成若干个小表.但是对于应用程序来讲,分区的表和没有分区的表是一样的.换句话来讲,分区对于应用是透明的,只是数据库对于数据的重新整理 ...

  4. mysql如何进行压测_详解MySQL如何按表创建千万级的压测数据

    有时我们要对系统做压测,或者数据库压力测试,这时候需要对某些表插入几百万或者上千万数据,下面介绍下怎么利用MySQL循环和存储过程对特定表的创建千万行数据. 1. 准备测试表 CREATE TABLE ...

  5. mysql 多表 查询慢_详解Mysql多表联合查询效率分析及优化

    1. 多表连接类型1. 笛卡尔积(交叉连接) 在MySQL中可以为CROSS JOIN或者省略CROSS即JOIN,或者使用','  如: SELECT * FROM table1 CROSS JOI ...

  6. mysql内连接部门平均值_详解MySql基本查询、连接查询、子查询、正则表达查询_MySQL...

    查询数据指从数据库中获取所需要的数据.查询数据是数据库操作中最常用,也是最重要的操作.用户可以根据自己对数据的需求,使用不同的查询方式.通过不同的查询方式,可以获得不同的数据.MySQL中是使用SEL ...

  7. mysql表分区数量限制_详解MySQL分区表的局限和限制的代码实例

    本文对Mysql分区表的局限性做了一些总结,因为个人能力以及测试环境的 原因,有可能有错误的地方,还请大家看到能及时指出,当然有兴趣的朋友可以去官方网站查阅. 禁止构建 分区表达式不支持以下几种构建: ...

  8. mysql查询男生基本情况_详解MySql基本查询、连接查询、子查询、正则表达查询...

    select * from STUDENT; 2.2.按条件查询 (1) 比较运算符 > , < ,= , != (< >),>= , <= select * fr ...

  9. mysql 显示前三项_详解MySQL三项实用开发知识

    其实项目应用的瓶颈还是在db端,在只有少量数据及极少并发的情况下,并不需要多少的技巧就可以得到我们想要的结果,但是当数据量达到一定量级的时 候,程序的每一个细节,数据库的设计都会影响到系统的性能.这里 ...

最新文章

  1. [原]《Web前端开发修炼之道》-读书笔记CSS部分
  2. 配置ip地址四种方法,方便学习linux的朋友
  3. python论坛app_理解python web开发,轻松搭建web app!
  4. requests下载大文件_11种方法教你用Python高效下载资源!
  5. adnroid string拼接_Android开发中string.xml文件中字符串的拼接
  6. linux下面实时查看进程,内存以及cpu使用情况使用命令
  7. 浏览器的工作原理整理
  8. join 子查询 效率_MySQL之多表查询
  9. 对硬盘进行分区时,GPT和MBR有什么区别
  10. cimiss java,cimis
  11. 第二工业大学计算机应用大专录取分,二工大|2019年上海第二工业大学专科层次依法自主招生各专业最低录取分数线...
  12. [Canvas] 手机拍照后,等比例压缩并上传图片
  13. 消除无法用内置管理账户打开sticky notes
  14. IDEA中修改Maven的项目名称
  15. 【ceph】ceph-mds journal模块解读
  16. Halcon20算子中文解释
  17. 张艾迪(创始人):创始人故事无限N个
  18. PHP内核源码阅读过程(四)
  19. dm8148 开发只boot启动参数vram=128简介
  20. USB PD快充协议芯片

热门文章

  1. android平台Camera采集数据ffmpeg进行编码探究
  2. PCIE万兆网卡-华硕XG-C100C
  3. ntp server 配置参数_NTP时间服务器的配置
  4. 压力测试工具之DDos-Attack
  5. git学习 add - commit - init
  6. tp5--权限操作(auth类)基本使用
  7. 在python中安装python库
  8. 响应已被截断_技术:RWD响应式网站网页设计基本原则
  9. python中自定义类中的self_学习python第52天
  10. python标准库time_python标准库介绍——12 time 模块详解