详解Mysql case then使用_Mysql

表的创建

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 when case then、mysql case then、mysqlreport使用详解、sql when case then、case when then,以便于您获取更多的相关知识。

时间: 2024-10-25 20:56:38

详解Mysql case then使用_Mysql的相关文章

详解MySQL集群搭建_Mysql

概述 MySQL Cluster 是MySQL 适合于分布式计算环境的高实用.可拓展.高性能.高冗余版本,其研发设计的初衷就是要满足许多行业里的最严酷应用要求,这些应用中经常要求数据库运行的可靠性要达到99.999%.MySQL Cluster允许在无共享的系统中部署"内存中"数据库集群,通过无共享体系结构,系统能够使用廉价的硬件,而且对软硬件无特殊要求.此外,由于每个组件有自己的内存和磁盘,不存在单点故障. 实际上,MySQL集群是把一个叫做NDB的内存集群存储引擎集成与标准的MyS

详解mysql索引总结----mysql索引类型以及创建_Mysql

关于MySQL索引的好处,如果正确合理设计并且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车.对于没有索引的表,单表查询可能几十万数据就是瓶颈,而通常大型网站单日就可能会产生几十万甚至几百万的数据,没有索引查询会变的非常缓慢.还是以WordPress来说,其多个数据表都会对经常被查询的字段添加索引,比如wp_comments表中针对5个字段设计了BTREE索引.  一个简单的对比测试 以我去年测试的数据作为一个简单示例,20多条数据源随机生成200万

详解MySQL limit查询优化的实际操作步骤

详解MySQL limit查询优化的实际操作步骤

详解Mysql自动备份与恢复的几种方法(图文教程)_Mysql

自动备份MySQL 5.0有三个方案:  备份方案一: 通过 mysqldump命令,直接生成一个完整的 .sql 文件  Step 1: 创建一个批处理 (说明:root 是mysql默认用户名, aaaaaa 是mysql密码, bugtracker 是数据库名) ------------mySql_backup.bat--------------------------------------------------------------------------------------

详解MySQL插入和查询数据的相关命令及语句使用_Mysql

插入数据MySQL 表中使用 INSERT INTO SQL语句来插入数据. 你可以通过 mysql> 命令提示窗口中向数据表中插入数据,或者通过PHP脚本来插入数据. 语法 以下为向MySQL数据表插入数据通用的 INSERT INTO SQL语法: INSERT INTO table_name ( field1, field2,...fieldN ) VALUES ( value1, value2,...valueN ); 如果数据是字符型,必须使用单引号或者双引号,如:"value&

详解MySql基本查询、连接查询、子查询、正则表达查询_Mysql

查询数据指从数据库中获取所需要的数据.查询数据是数据库操作中最常用,也是最重要的操作.用户可以根据自己对数据的需求,使用不同的查询方式.通过不同的查询方式,可以获得不同的数据.MySQL中是使用SELECT语句来查询数据的.在这一章中将讲解的内容包括. 1.查询语句的基本语法 2.在单表上查询数据 3.使用聚合函数查询数据 4.多表上联合查询 5.子查询 6.合并查询结果 7.为表和字段取别名 8.使用正则表达式查询 什么是查询? 怎么查的? 数据的准备如下: create table STUD

详解MySQL中的存取权限_Mysql

看到很多网友提出关于MySQL登录不上服务器的问题,包括有的是在PHP中调用MySQL时发生的不能登录MySQL数据库服务器的问题,以为是PHP出了问题.其实是MySQL权限的问题. MySQL的权限系统在MySQL的手册中是很长的一章,我把它打印出来足足印了20多页!这里就将我对它的理解简要地写出来,希望能对刚刚接触MySQL的同志有点帮助:有说得不对的地方,也请同志们指出. 在我了解了MySQL的权限机制后,不由得不赞叹它的严密与巧妙:也许所有的数据库系统都是如此罢,只是别的大型数据库把权限

详解MySQL中WHERE子句的用法_Mysql

我们已经看到SQL SELECT命令来从MySQL表获取数据.我们可以使用一个条件子句WHERE子句中筛选出来的结果.使用WHERE子句,我们可以指定一个选择的标准来从表中选择所需的记录.语法: 下面是通用的SQL WHERE子句来获取数据从MySQL表的SELECT命令的语法: SELECT field1, field2,...fieldN table_name1, table_name2... [WHERE condition1 [AND [OR]] condition2.....    

详解MySQL中的SQRT函数的使用方法_Mysql

MySQL的SQRT函数是用来计算出任何数量的平方根.可以使用SELECT语句找出方检定根的任意数如下: mysql> select SQRT(16); +----------+ | SQRT(16) | +----------+ | 4.000000 | +----------+ 1 row in set (0.00 sec) 所看到的浮点值,因为内部MySQL将处理浮点数据类型的平方根. 可以使用SQRT函数,计算出记录的平方根.了解SQRT函数更详细用法,考虑EMPLOYEE_TBL的表具