MYSQL条件控制语句

一、case when语句

case when 条件 then 结果
when 条件 then 结果
when 条件 then 结果
.........
else 结果
end

例:teacher表记录了教师ID和教师姓名,我们要返回每个老师的教授科目



如果t_name=张三,则返回语文老师,t_name=李四返回语文老师,t_name=王五返回英语老师,其他返回空值(注意语句后边没有逗号)

select t_name,
       case when t_name='张三' then '语文老师'
            when t_name='李四' then '数学老师'
            when t_name='王五' then '英语老师'
            else null
       end           
from teacher;

out:



end放哪都行,最后就行,else可以不写
如:

select t_name,
       case when t_name='张三' then '语文老师'
            when t_name='李四' then '数学老师'
            when t_name='王五' then '英语老师'
       end           
from teacher;

如:

select t_name,
case when t_name='张三' then '语文老师' when t_name='李四' then '数学老师' when t_name='王五' then '英语老师' end 
from teacher;

另外,还可以写成

select t_name,
       case t_name when '张三' then '语文老师'
                   when '李四' then '数学老师'
                   when '王五' then '英语老师'
       end           
from teacher;

二、if函数

if(条件,如果成立返回a,不成立返回b)
例:有一张表记录了学生ID,课程ID,和成绩



查询每个学生及格的科目数量

select s_id,count(score) as c from score group by s_id;

这样得出的是每个学生的科目数量,我们要的是及格的,所以我们在count函数里边加上if函数,如果分数>60,则返回分数,否则返回空值(相当于我们得到虚拟的一列,这一列只记录了大于60的分数成绩,小于60的都记为空值,所以count不会计算到)

select s_id,count(if(score>60,score,null)) as c from score group by s_id;

out:


2.如果name为空值,返回pass,如果不是则返回name本身
if(name is null,'pass',name)

三、ifnull函数

ifnull(如果不是null则返回a,是null就返回b)
例:学生成绩表中有一个成绩为空值,我们要查找学生成绩,如果是空值就返回0


 select score from score;

out:


返回所有成绩包括null,我们要让null返回为0,使用ifnull函数

select 
    ifnull(score,0) 
from score;

out:


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容