首页 > 编程知识 正文

mysql update操作流程,spend your life in your own way

时间:2023-05-05 16:01:06 阅读:157546 作者:2760

单击上面的“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训练营

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。