赞
踩
在MySQL中,需要用到条件判断函数,例如 case when、if、ifnull。
if(expr,result_true,result_false)
注意: 一个条件表达式两个结果
expr
:条件表达式;- 如果结果为true,则返回result_true,否则返回result_false。
ifnull(result,value)
注意: 如果查询结果是
null
,就转换为特定的值
result
:查询结果;value
:如果查询结果为null,则返回value,否则返回result。
case
when 条件1 then 结果1
when 条件2 then 结果2
...
when 条件n then 结果n
else 结果m
end
注意: 在同一条判断语句中可以有一个到多个判断条件
else
:如果查询结果不满足when里面的任何一个条件,返回else后的结果m;- 判断条件按语句顺序执行,如果查询结果既符合条件1又符合条件2,那么只能得到结果1;
- case when 语句大多在select 查询列里面使用。
students 表 (id表示主键,name是姓名,score是平均成绩)
id | name | gender | score |
---|---|---|---|
1 | 李明 | 男 | 99 |
2 | Null | 男 | 74 |
3 | 孙华 | 女 | 59 |
select
count(if(gender='男',1,null)) as man_number,
sum(if(gender='女',1,0)) as woman_number
from students
#统计结果:男生人数2,女生人数1
select
id,
ifnull(name,'未知') as name,
gender,
score
from students
id | name | gender | score |
---|---|---|---|
1 | 李明 | 男 | 99 |
2 | 未知 | 男 | 74 |
3 | 孙华 | 女 | 59 |
select
name,
score,
(case
when score >= 90 then '优秀'
when score >= 80 then '良好'
when score >= 60 then '及格'
else '不及格'
end) level
from students
id | name | gender | score | level |
---|---|---|---|---|
1 | 李明 | 男 | 99 | 优秀 |
2 | 张三 | 男 | 74 | 及格 |
3 | 孙华 | 女 | 59 | 不及格 |
创建 students 表的代码
-- ---------------------------- -- Table structure for students -- ---------------------------- DROP TABLE IF EXISTS `students`; CREATE TABLE `students` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '学生id', `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '姓名', `gender` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '性别', `score` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '成绩', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of students -- ---------------------------- INSERT INTO `students` VALUES (1, '李明', '男','99'); INSERT INTO `students` VALUES (2, null, '男','67'); INSERT INTO `students` VALUES (3, '孙华', '女','59');
非常荣幸您能阅读到最后,希望文章中的内容能够帮助到您。
本博客内容均为博主原创,未经授权,请勿转载,谢谢!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。