MySQL的update多个字段时逗号写成and的错误例子

今天一个开发反馈update某行但不生效,场景如下:

mysql> select * from test;  
 +------+------+
 | c1   | c2   |
 +------+------+
 |    0 | a    |
 +------+------+

他想将c1列的值改成1、c2的值改成'b',然后用了如下sql:
update test set c1=1 and c2='b' where c1=0;
可以发现这个sql写法是错误的,正确写法应该是:
update test set c1=1,c2='b' where c1=0;
但第一个错误的sql运行没报错,因为被MySQL理解成:

update test set c1=(1 and c2='b') where c1=0;  
 =>
 update test set c1=(1 and 0) where c1=0;  
 ==>
 update test set c1=0 where c1=0;  

所以错误的sql相当啥都不做,但不仔细观察and应该改成逗号,还会觉得蛮诡异呢~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,769评论 18 399
  • 一. Java基础部分.................................................
    wy_sure阅读 3,839评论 0 11
  • 喜欢简书,因为它很温暖,那些文字像有魔力一样,带我静静地走进别人的故事,再从感动中悟出自己的心得。 我叫cary...
    caryona阅读 285评论 0 0
  • 书中有几个观点,我觉得还是挺值得学习的,下面整理如下: 一、追求财务平衡 我们吃饭讲究营养均衡,同样地,我们的财务...
    tracy投资笔记阅读 370评论 0 0
  • 我必走过这段坎坷 与你一起疯狂作乐 就像风,就像雨 就像挥霍无度的酒杯一样肆虐 我必走过这段坎坷 和你一样不知不觉...
    曹望望阅读 243评论 2 4