没想到吧,换标题了。
这确实是个简单题。但是sql基础不扎实啊
用到一个函数判断locate,主要是为了判断姓名是否以M开头。用法如下:
!locate('M',"Carmelo")=1
当然是不对的,因为开始写的伪代码,是
!locate('M',"Carmelo")==1
,如果!的运算优先级较低,当然是生效的。但是这是sql。。所以是先运算!localte('M',"Carmelo")
,正好结果是bool类型被转换为了0 | 1,所以竟然通过了一些用例。
最终写法
select e.employee_id,
(e.salary*(if(MOD(e.employee_id,2)=1 && !(locate('M',name)=1),1,0))) as bonus
from Employees e
order by e.employee_id