1. 程式人生 > >MySql 中關鍵字 case when then else end 的用法

MySql 中關鍵字 case when then else end 的用法

img closed sta bsp sql hid not weight one

解釋:

1 SELECT            
2     case                   -------------如果
3     when sex=1 then  -------------sex=‘1‘,則返回值‘男‘
4     when sex=2 then  -------------sex=‘2‘,則返回值‘女‘  
5     else 其他                 -------------其他的返回‘其他’
6     end                    -------------結束
7 from   sys_user            --
------整體理解: 在sys_user表中如果sex=‘1‘,則返回值‘男‘如果sex=‘2‘,則返回值‘女‘ 否則返回‘其他’

--- 用法一:

1 SELECT 
2             CASE WHEN STATE = 1 THEN 成功 
3                  WHEN STATE = 2 THEN 失敗
4             ELSE 其他 END  
5             FROM  SYS_SCHEDULER

---用法二:

1 SELECT STATE
2             CASE WHEN 1
THEN 成功 3 WHEN 2 THEN 失敗 4 ELSE 其他 END 5 FROM SYS_SCHEDULER

例子:

技術分享圖片
 1 有員工表empinfo 
 2 ( 
 3 Fempno varchar2(10) not null pk, 
 4 Fempname varchar2(20) not null, 
 5 Fage number not null, 
 6 Fsalary number not null 
 7 ); 
 8 假如數據量很大約1000萬條;寫一個你認為最高效的SQL,用一個SQL計算以下四種人: 
9 fsalary>9999 and fage > 35 10 fsalary>9999 and fage < 35 11 fsalary <9999 and fage > 35 12 fsalary <9999 and fage < 35 13 每種員工的數量; 14 select sum(case when fsalary > 9999 and fage > 35 15 then 1 16 else 0end) as "fsalary>9999_fage>35", 17 sum(case when fsalary > 9999 and fage < 35 18 then 1 19 else 0 20 end) as "fsalary>9999_fage<35", 21 sum(case when fsalary < 9999 and fage > 35 22 then 1 23 else 0 24 end) as "fsalary<9999_fage>35", 25 sum(case when fsalary < 9999 and fage < 35 26 then 1 27 else 0 28 end) as "fsalary<9999_fage<35" 29 from empinfo;
View Code

MySql 中關鍵字 case when then else end 的用法