MySql之if case查询用法

2017-10-16  本文已影响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()的返回值是数字或是字符串,具体情况取决于其所使用的语境。

上一篇 下一篇

猜你喜欢

热点阅读