美文网首页
MySql之if case查询用法

MySql之if case查询用法

作者: 鱼落于天 | 来源:发表于2017-10-16 22:18 被阅读0次

    以下是我用到的数据表

    基础数据表

    1. 判断内容

    SELECT `name`,course_quantity,sex,IF(sex = '女','姑娘','公子') as `call`  from students;

    只截取了3行数据。

    if(表达式, 表达式正确的结果, 表达式错误的结果)

    2.if做条件判断

    SELECT `name`,course_quantity,sex from students where IF(sex = '女', course_quantity < 6, course_quantity > 6) ORDER BY sex

    if做判断条件直接返回 条件语句就行了

    3.case 的作用

    Case函数只返回第一个符合条件的值,剩下的Case部分将会被自动忽略

    将选课数取别名

    SELECT *, CASE course_quantity WHEN 1 THEN '一' WHEN 2 THEN '二' WHEN 3 THEN '三' WHEN 6 THEN '六' WHEN 9 THEN '九' ELSE '呵呵' END as `case` FROM students;

    case简单用法,但是会有一些限制

    将选课数按 3 6 9 分为4个等级,可以按这四个等级进行分组统计。

    SELECT COUNT(*),`case` from (SELECT *, CASE WHEN course_quantity < 3 THEN 'RANK_1' WHEN course_quantity <6 THEN  'RANK_2' WHEN course_quantity <9 THEN 'RANK_3' ELSE  'RANK_4' END AS `case` FROM students )as a GROUP BY `case`;

    case函数的另一种稍复杂写法

    #将 课程数 2-6的加2,大于7的减3,如果写俩sql,当选课数等于6时只能先减3,等于9时就只能先执行加2的sql,合成一条sql的话就是如下

    UPDATE students SET course_quantity =  CASE WHEN course_quantity BETWEEN 2 AND 6 THEN course_quantity + 2 WHEN course_quantity > 7 THEN course_quantity - 3 ELSE  course_quantity END 

    case 可以类比 switch学习,switch中有默认的返回值default,case养成良好的习惯 最后加上else end 同时case中也是可以嵌套case的

    4.IFNULL

    IFNULL(expr1,expr2)

    假如expr1 不为 NULL,则 IFNULL() 的返回值为 expr1; 否则其返回值为 expr2。IFNULL()的返回值是数字或是字符串,具体情况取决于其所使用的语境。

    相关文章

      网友评论

          本文标题:MySql之if case查询用法

          本文链接:https://www.haomeiwen.com/subject/ellluxtx.html