• [织梦吧]唯一域名:www.dedecms8.com,织梦DedeCMS学习平台.

当前位置: > 编程与数据库 > mysql教程 >

case when用法例子 SQL中的CASE WHEN使用方法(5)

来源: www.dedecms8.com 编辑:织梦吧 时间:2014-06-23点击:
    
STD_ID   MAIN_class     
    
------   ----------     
    
300      4     
    
400      5     
    
500      6     
    
条件     
    
--条件:选择多门课程的学生     
    
SELECT std_id, class_id AS main_class     
    
FROM Studentclass     
    
WHERE main_class_flg = 'Y' ;     
    
执行结果     
    
STD_ID  MAIN_class     
    
------  ----------     
    
100     1     
    
200     3     
    
如果使用Case函数,我们只要一条SQL语句就可以解决问题,具体如下所示     
    
SELECT  std_id,     
    
CASE WHEN COUNT(*) = 1  --只选择一门课程的学生的情况     
    
THEN MAX(class_id)     
    
ELSE MAX(CASE WHEN main_class_flg = 'Y'    
    
THEN class_id     
    
ELSE NULL END    
    
)     
    
END AS main_class     
    
FROM Studentclass     
    
GROUP BY std_id;     
    
运行结果     
    
STD_ID   MAIN_class     
    
------   ----------     
    
100      1     
    
200      3     
    
300      4     
    
400      5     
    
500      6     
    
通过在Case函数中嵌套Case函数,在合计函数中使用Case函数等方法,我们可以轻松的解决这个问题。使用Case函数给我们带来了更大的自由度。     
    
最后提醒一下使用Case函数的新手注意不要犯下面的错误     
    
CASE col_1     
    
WHEN 1       THEN 'Right'    
    
WHEN NULL  THEN 'Wrong'    
    
END    
    
在这个语句中When Null这一行总是返回unknown,所以永远不会出现Wrong的情况。因为这句可以替换成WHEN col_1 = NULL,这是一个错误的用法,这个时候我们应该选择用WHEN col_1 IS NULL。    
  
  
  
数据库   
有一张表table1 结构如下.  
  
table1:  
  
username    action     
--------------------------------  
A                   CALL         
A                   SEARCH  
A                   SEARCH  
B                   CALL        
B                   SEARCH   
A                   SEARCH  
A                   VIDEO  
B                   SEARCH  
B                   VIDEO  
A                   CALL    
标签: sql case when

About D8

  • ©2014 织梦吧(d8) DedeCMS学习交流平台
  • 唯一网址 www.DedeCMS8.com 网站地图
  • 联系我们 1170734538@qq.com ,  QQ