单击上面的“SQL数据库开发”,然后单击,
打上“天花板和星星标志”,最早把晾的衣服送到
起因
最近开发的同学问了我好几次。 例如,如下图所示:
总结问题,MySQL中有一条update记录,语法正确,但记录没有更新……
结论
总结:在UPDATE语句中更新多个字段时,必须用逗号而不是" AND "分隔字段。
现象
刚遇到这个问题的时候,我得到了这个句子并直接在测试库中执行。 确实有问题,但与开发描述不同。 这里使用测试数据进行模拟:
有问题的SQL语句: updateappssetowner _ code=' 43212 ' andowner _ name=' ajddc ' where owner _ code=' 13245 ' andowner _ name
执行前的记录如下。
执行后的记录如下。
可以看出实际上有效果,而不是像这位开发同学说的那样“好像没有效果”的结果。 owner_name的值没有改变,但owner_code变为了0。
why? 分析
语法好像完全没有问题。 翻了MySQL官方文档的更新语法:
看到assignment_list的格式是用逗号分隔的col_name=value列表,顿时亮了起来。 开发者希望的多字段更新语句应该写如下。 updateappssetowner_code='43212 ',owner_name
回去再试一次:
果然,这样就得到了想要的结果!
总结:在UPDATE语句中更新多个字段时,必须用逗号而不是" AND "分隔字段。
后记:在后面等空闲的时候,回头看了看。 为什么用“AND”分开的话,会变成owner_code=0,结果很不可思议。 多次尝试后,updateappssetowner _ code=' 43212 ' andowner _ name=' ajddc ' where owner _ code=' 13245 ' andowner _ name
(等效) updateappssetowner _ code=(43212 ' andowner _ name=' ajddc ' ) where owner _ code=' 13245 ' andowner _ name=
另一方面,“43212”andowner_name=“‘ajddc”)是逻辑表达式,在此容易看出owner _ name不是“ajddc”。 因此,这个逻辑表达式的结果为false,false在MySQL中等价于0!
作者:干净的故事
http://tech.dianwoda.com
——结束——
后台回复关键词: 1024、获取精心整理的技术晾衣架
后台回复关键词:进入群,带到xlmdwt高贵画笔交流群。
这是可以学习技术的公众号。 请关注点击“阅读原文”了解SQL训练营