mysql 语句case when
2016-07-12 17:39
441 查看
一、
表的创建
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');
使用case when语句
1。
select name,
case
when birthday<'1981' then 'old'
when birthday>'1988' then 'yong'
else 'ok' END YORN
from lee;
END 后面是定义该列的名字,如果没有就会将整个case打印出来,如 例2
2。
select NAME,
case name
when 'sam' then 'yong'
when 'lee' then 'handsome'
else 'good' end
from lee;
当然了case when语句还可以复合
3。
select name,birthday,
case
when birthday>'1986' then 'yong'
when name='lee' then 'handsome'
else 'just so so ' end AGE
from lee;
在这里用sql语句进行日期比较的话,需要对年加引号。要不然可能结果可能和预期的结果会不同。我的mysql版本5.1
当然也可以用year函数来实现,以第一个sql为例
select NAME,
CASE
when year(birthday)>1988 then 'yong'
when year(birthday)<1981 then 'old'
else 'ok' END QQQ
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);
1.#对罚款登记分为三类,第一类low,包括大于0小于等于40的罚款,第二类moderate大于40
#到80之间的罚款,第三类high包含所有大于80的罚款。
2.#统计出属于low的罚款编号。
第一道题的解法与上面的相同
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
2.#统计出属于low的罚款编号。重点看这里的解决方法
方法1.
select paymentno,amount
from penalties
where 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 ='low';
方法2
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';
<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
阅读(61) | 评论(0) | 转发(0) |
0
上一篇:Linux 查看连接数命令
下一篇:mysql常用show语句
相关热门文章
python 多进程之管道实例(模...
解决mysql“Access denied for...
MySQL数据插入、修改、删除...
mysql启动的四种方式
【原创】PostgreSQL 实现MySQL...
linux dhcp peizhi roc
关于Unix文件的软链接
求教这个命令什么意思,我是新...
sed -e "/grep/d" 是什么意思...
谁能够帮我解决LINUX 2.6 10...
给主人留下些什么吧!~~
评论热议
表的创建
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');
使用case when语句
1。
select name,
case
when birthday<'1981' then 'old'
when birthday>'1988' then 'yong'
else 'ok' END YORN
from lee;
END 后面是定义该列的名字,如果没有就会将整个case打印出来,如 例2
2。
select NAME,
case name
when 'sam' then 'yong'
when 'lee' then 'handsome'
else 'good' end
from lee;
当然了case when语句还可以复合
3。
select name,birthday,
case
when birthday>'1986' then 'yong'
when name='lee' then 'handsome'
else 'just so so ' end AGE
from lee;
在这里用sql语句进行日期比较的话,需要对年加引号。要不然可能结果可能和预期的结果会不同。我的mysql版本5.1
当然也可以用year函数来实现,以第一个sql为例
select NAME,
CASE
when year(birthday)>1988 then 'yong'
when year(birthday)<1981 then 'old'
else 'ok' END QQQ
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);
1.#对罚款登记分为三类,第一类low,包括大于0小于等于40的罚款,第二类moderate大于40
#到80之间的罚款,第三类high包含所有大于80的罚款。
2.#统计出属于low的罚款编号。
第一道题的解法与上面的相同
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
2.#统计出属于low的罚款编号。重点看这里的解决方法
方法1.
select paymentno,amount
from penalties
where 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 ='low';
方法2
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';
<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
阅读(61) | 评论(0) | 转发(0) |
0
上一篇:Linux 查看连接数命令
下一篇:mysql常用show语句
相关热门文章
python 多进程之管道实例(模...
解决mysql“Access denied for...
MySQL数据插入、修改、删除...
mysql启动的四种方式
【原创】PostgreSQL 实现MySQL...
linux dhcp peizhi roc
关于Unix文件的软链接
求教这个命令什么意思,我是新...
sed -e "/grep/d" 是什么意思...
谁能够帮我解决LINUX 2.6 10...
给主人留下些什么吧!~~
评论热议
相关文章推荐
- MySQL中动态生成多条件查询语句
- mysql主从备份Slave_IO_Running:No的解决方法
- 单机启动多个mysql服务(修改)
- 在线生成一份经过专家优化的MySQL配置文件
- 关于MySQL的LIMIT 语法小优化!
- mysql select 语句查询排名
- MySQL的索引创建、删除
- 将项目放在不同系统环境下出现编码格式错误
- MySQL 调优和使用必读
- MySql-5.7.13-win64的安装配置及问题解决
- mysql explain中的using filesort
- MySQL中删除表中重复数据,只保留一条
- mysql的异步复制
- 【mysql学习笔记】-explain的用法
- 【mysql学习笔记】-索引
- 树莓派下的基本命令和安装MySQL vim等
- mysql 批量修改表前缀
- 【greenplum】将greenplum 数据导入mysql 数据库工具
- Mysql中的like模糊查询
- mysql UNIX时间戳与日期的相互转换 查询表信息