mysqlcasewhen优化_SQL优化⼤神玩转MySQL函数系列异步通信采用什么方式
mysql面试题sql优化_case_when的坑
⼤家好,我是知数堂SQL 优化班⽼师 ⽹名:骑龟的兔⼦
今天给⼤家带来的 在MySQL,Oracle 都通⽤的⼀个⾮常基础的但是⾮常重要的函数
case when
我们看下如下表和数据
在这⾥我们通过case when 语句 制造⼀个列如下discontinue>vlookup函数为什么匹配不出来 n a
这样我们就写了⼀个最基本的case when 语句。
下⾯的链接是官⽅⽂档
这个函数给我们提供了如Java或者其他编程语⾔的 if..else 语法⼀样的效果的函数,使得我们写SQL如同编程⼀样。
但是这个函数在MySQL和Oracle中有共同注意的地⽅和个别注意的地⽅。
共同注意的地⽅:
这个函数是顺序执⾏的,所以我们每个条件之间不能有交集,这⼀点⾮常重要
如上图所⽰,这⾥的 when emp_no = 30970 then 'd530970'
这个条件跟上⾯的 dept_no='d005' then 'd5' 是有重复的所以在第⼀⾏的时候
就都过滤掉了,永远不会⾛第⼆⾏
但是如上图,我们把两个顺序调换了,结果跟我们想要的结果⼀样了,因为第⼀个when和第⼆个when虽然有交集,但是第⼆个when的范围⽐第⼀个⼤,所以交集之外的⾛了第⼆个when ,所以,如果你们碰到有交集的情况,那必须把范围较少的放在前⾯。
下⾯的是在MySQL中没有问题,但是在Oracle中报错的例⼦。
Oracle
小程序css布局
MySQL
这个案例⾮常简单,但是也给我们有很多提⽰,Oracle 对语法更加严格,⽽MySQL 显然更不容易报
错。
下⾯是修改之后的Oracle 能运⾏出来的
今天的案例就单纯的从case when的 基本语法出发,着重讲了很容易犯错的地⽅,
所谓的复杂的SQL,我认为就是在这基础上添加了group by 还有⼏个join 所以我们必须把基础打捞才可以应付更加复杂的SQL.
谢谢⼤家~ 欢饮转发
我的:SQL开发与优化(sqlturning)
float的短语搭配我会在头条提供相应例⼦的视频,希望⼤家关注
头条号

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。