mysql update更新无效,结果为0问题处理
你是否遇到这样的情况:在MySQL里面update一条记录,语法都正确的,但记录并没有被更新…
比如如下SQL语句:
update apps set code="123" and name ="李四" where code="234" and name ="张三";
执行之前,code=234,name=张三。但执行之后变成code=0,name=张三。
这是为什么呢?其实并不是无效,而是更新了code字段为0了。
mysql update更新为0原因
MySQL官方文档的update语法:
assignment_list的格式是以逗号分隔的col_name=value列表,是不是找到原因了?因为上面set语句后面使用了“and”而不是“,”。
正确的写法应该如下:
update apps set code="123" , name ="李四" where code="234" and name ="张三";
再次执行,结果正常。那么为什么上面的语句可以执行成功,但结果不对呢?
update为0,原因分析
其实,最上面的SQL语句等价于下面的SQL语句:
update apps set code= ("123" and name ="李四") where code="234" and name ="张三";
那么,在满足where后面条件之后,前面set只设置code的值为括号里面的and的结果,是一个逻辑表达式。因为档期name为“张三”,因此结果为false,false在MySQL中等价于0!
因此,code被更新为0。
原文链接:《mysql update更新无效,结果为0问题处理》
关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台
除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接