case when mysql_mysql条件语句case when的实例
本節學習mysql中case when條件語句的一些實例。
1,表的創建
復制代碼 代碼示例:
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
2,數據插入:
復制代碼 代碼示例:
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
when birthday>'1988' then 'yong'
else 'ok' END YORN
from lee;
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>'1983' then 'yong'
when name='lee' then 'handsome'
else 'just so so ' end
from lee;
此處用sql語句進行日期比較的話,需要對年加引號。
否則結果可能和預期的結果會不同。
還可以用year函數實現,以第一個sql為例:
復制代碼 代碼示例:
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);
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';
總結
以上是生活随笔為你收集整理的case when mysql_mysql条件语句case when的实例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 女子点螺蛳粉外卖吃出整根蚯蚓 商家称其想
- 下一篇: 特美声音响蓝牙按哪个