表的创建

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. 使用DistilBERT 蒸馏类 BERT 模型的代码实现
  2. bootanimation文件名_Android开机logo制作
  3. 如何利用弹幕,打造出非凡的观看体验
  4. 4.64Tomcat的日志
  5. java setsize_Java Vector setSize()方法与示例
  6. 【独家】孙茂松:从机器翻译到古诗生成
  7. vue.js v-bind
  8. 咸菜可以吃吗,对健康有害吗?
  9. Objective-C中的位运算符用法
  10. Ubuntu16.04 安装Caffe教程
  11. #第七章 基于太阳系数据的股市拟合数学模型的理论应用7.1倾斜的时空
  12. 软件收集-建筑工程资料软件
  13. 【HW2020漏洞回顾】深信服EDR两大漏洞(转载)
  14. ios UIImageView 部分圆角(加上 borderWidth、borderColor 效果修复)
  15. 研究生计算机专业笔记本配置要求,大学生买什么电脑好?电脑配置及选择方法全解析...
  16. 关于裁剪CSV文件中的各类数据的代码
  17. java程序员常用的快捷键
  18. 支持向量机(SVM)——线性支持向量机
  19. RESIZE DATAFILE与ORA-03297
  20. php phantomj,射手网复活攻略:用百度快照和phantomjs让射手网起死回生

热门文章

  1. android之普通蓝牙通信
  2. Abseil之New Join API
  3. Linux安装nextcloud教程,WSL下安装nextcloud
  4. inlfuxdb版本_InfluxDB安装及配置
  5. python爬虫视频课程推荐_Python 爬虫实战案例(推荐小白研究)
  6. 终面后拿offer几率_20届网易校招失败后的经验(现已拿offer)
  7. Android Studio如何去除界面默认标题栏
  8. geitee仓库项目拉到(克隆到)本地
  9. 开机时设置linux 内核参数 mem,Linux内核开机保留大块内存的方法总结
  10. 2017年杭州java面试题_2017年Java面试题整理