詳解Mysql case then使用
表的創(chuàng)建
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
數(shù)據(jù)插入:
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
第三種:當(dāng)然了,case when 語(yǔ)句還可以復(fù)合
select name, birthday, case when birthday > '1983' then 'yong' when name='lee' then 'handsome' else 'just so so' end from lee;
在這里用sql語(yǔ)句進(jìn)行日期比較的話,需要對(duì)年加引號(hào),要不然可能結(jié)果和預(yù)期的結(jié)果不同,
當(dāng)然也可以用year函數(shù)來(lái)實(shí)現(xiàn)
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);
第一題:對(duì)罰款登記分為三類(lèi),第一類(lèi)low,包括大于0小于等于40的罰款,第二類(lèi)moderate大于40到80之間的罰款,第三類(lèi)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
第二題:統(tǒng)計(jì)出屬于low的罰款編號(hào)
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多個(gè)字段
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
相關(guān)文章
老鳥(niǎo)帶你開(kāi)發(fā)專(zhuān)業(yè)規(guī)范的MySQL啟動(dòng)腳本
這篇文章主要介紹了老鳥(niǎo)帶你開(kāi)發(fā)專(zhuān)業(yè)規(guī)范的MySQL啟動(dòng)腳本,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09MySQL數(shù)據(jù)庫(kù)遷移data文件夾位置詳細(xì)步驟
這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)遷移data文件夾詳細(xì)步驟,需要的朋友可以參考下2014-03-03MyEclipse連接MySQL數(shù)據(jù)庫(kù)圖文教程
這篇文章主要為大家詳細(xì)介紹了MyEclipse連接MySQL數(shù)據(jù)庫(kù)圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-10-10MySQL手動(dòng)注冊(cè)binlog文件造成主從異常的原因
這篇文章主要介紹了MySQL手動(dòng)注冊(cè)binlog文件造成主從異常的原因,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫(kù),感興趣的朋友可以了解下2020-10-10mysql alter table命令修改表結(jié)構(gòu)實(shí)例
這篇文章主要介紹了mysql alter table命令修改表結(jié)構(gòu)實(shí)例的相關(guān)資料,需要的朋友可以參考下2016-10-10MySQL中開(kāi)啟和使用通用查詢?nèi)罩镜膶?shí)例教程
這篇文章主要介紹了MySQL中開(kāi)啟和使用通用查詢?nèi)罩镜膶?shí)例教程,包括其備份和關(guān)閉等基礎(chǔ)操作的例子講解,需要的朋友可以參考下2015-12-12MySQL學(xué)習(xí)第五天 MySQL數(shù)據(jù)庫(kù)基本操作
MySQL學(xué)習(xí)第五天我們將針對(duì)MySQL數(shù)據(jù)庫(kù)進(jìn)行基本操作,創(chuàng)建、修改、刪除數(shù)據(jù)庫(kù)等一系列操作進(jìn)行學(xué)習(xí),感興趣的小伙伴們可以參考一下2016-05-05Mysql桌面工具之SQLyog資源及激活使用方法告別黑白命令行
這篇文章主要介紹了Mysql桌面工具之SQLyog資源及激活使用方法告別黑白命令行,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02mysql 數(shù)據(jù)庫(kù)取前后幾秒 幾分鐘 幾小時(shí) 幾天的語(yǔ)句
這篇文章主要介紹了mysql 數(shù)據(jù)庫(kù)中取前后幾秒 幾分鐘 幾小時(shí) 幾天的語(yǔ)句,需要的朋友可以參考下2018-01-01