以下是我用到的数据表
1. 判断内容
SELECT `name`,course_quantity,sex,IF(sex = '女','姑娘','公子') as `call` from students;
if(表达式, 表达式正确的结果, 表达式错误的结果)
2.if做条件判断
SELECT `name`,course_quantity,sex from students where IF(sex = '女', course_quantity < 6, course_quantity > 6) ORDER BY sex
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;
将选课数按 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`;
#将 课程数 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()的返回值是数字或是字符串,具体情况取决于其所使用的语境。