08月03, 2022
收藏本站

有点意思的手误SQL

UPDATE
  order_clear
set
  clear_status = 10,
  clear_way = clear_way = 11
where
  id = '123'

今天在审核SQL,发现开发同事提了这么一条修数SQL。初看很简单,根据id变更值,影响行数1,基本可以放行。但又仔细看了下set clear_way = clear_way = 11,什么写法?多复制了一次字段名?还是为了判断 clear_way == 11
如果直接执行的话,你猜clear_way最终会被设置成什么值?0,1,11?
答案:0
会先将后面的表达式进行计算clear_way=(clear_way=11),而开发同事本身是要将clear_way置为11的,此时clear_way!=11,因此计算结果clear_way=0


Comments