文章插图
源数据
(二)使用搜索的case函数进行分条件修改(此处不能使用简单case函数,因为简单case函数不能判断带范围的条件)
select name,( case when desciption in(select description from t_user2) then '一致' else '不一致' end) 比较结果from t_user1
(三)比较结果:文章插图
比较结果
作用四: 行转列(重点-面试常见) (一)需求: 将表中数据按照每个学生姓名 、科目、成绩进行排序,数据如下:
文章插图
(二)使用case函数转换
// 使用普通case函数SELECT NAME, max( CASE class WHEN '语文' THEN grade ELSE 0 END ) 语文, max( CASE class WHEN '数学' THEN grade ELSE 0 END ) 数学, max( CASE class WHEN '英语' THEN grade ELSE 0 END ) 英语 FROM t_source GROUP BYNAME// 使用搜索case函数SELECT NAME, max( CASE WHEN class = '语文' THEN grade ELSE 0 END ) 语文, max( CASE WHEN class = '数学' THEN grade ELSE 0 END ) 数学, max( CASE WHEN class = '英语' THEN grade ELSE 0 END ) 英语 FROM t_source GROUP BYNAME
(三)转换结果文章插图
转换结果
五:普通case函数和搜索case函数的区别 通过上面的案例可看到,普通的case函数写法相对简洁,但是功能也相对简单,搜索case函数的功能更加强大,具体如下:
1、简单case函数判断条件只能是等于,而搜索case函数的条件可以是子查询,In,大于、等于等等 。
2、如果只是使用简单的条件分组,可以选择普通case函数,如果需要判断更多的场景,则选择搜索case更好 。
六:总结 如果你想亲自实践,需要本文章的测试数据,可以私信回复: 【测试数据】即可
看到此处,你应该对Case函数有了更深入的认识,但是、关于Case函数的使用远远不止这一篇文章描述的,还需要我们在实践中去发现更多的可能,如果你看完本文觉得有疑问或者本文有错误的地方,欢迎私信或者在下方留言指出 。
码字不易、如果你觉得本文对你有一点点帮助,可以点赞和关注!
【三分钟搞懂SQL的Case函数】
推荐阅读
- mysql慢查询语句分析总结
- MySQL8.0大表秒加字段,是真的吗?
- 网易云背后的数据库:Facebook开源,完全兼容MySQL
- MySQL底层之MVCC、回滚段、一致性读、锁定读
- 数据库:innodb数据组织形式
- spring注入你真搞懂了吗?不会一直都是这样错误理解吧?
- NewSQL角度看Apache ShardingSphere
- 搞懂内存条颗粒频率时序,附DDR4内存条推荐
- 强人“锁”难,MySQL到底有多少锁?
- 聊聊Mysql——慢sql优化方法论