mysql这样写update语句,劝退

HollisChuang HollisChuang     2023-01-29     226

关键词:

来源:ju.outofmemory.cn/entry/336774

最近好几次有开发同学在钉钉上问我,比如下图:

问题归纳起来就是:在MySQL里面update一条记录,语法都正确的,但记录并没有被更新...

刚遇到这个问题的时候,我拿到这条语句直接在测试库里面执行了一把,发现确实有问题,但和开发描述的还是 有区别 ,这里我用测试数据来模拟下:

有问题的SQL语句

执行之前的记录是这样的:

执行之后的记录是这样的:

可以看到,结果并不像这位开发同学说的“好像没有效果”,实际上是有效果的:

why?

看起来,语法是完全没有问题,翻了翻MySQL官方文档的update语法:

看到assignment_list的格式是以逗号分隔的col_name=value列表,一下子豁然开朗,开发同学想要的多字段更新语句应该这样写:

倒回去再重试验一把

果然,这下得到了想要的结果!

小结 : 在一条UPDATE语句中,如果要更新多个字段,字段间不能使用“AND”,而应该用逗号分隔。

后记 : 后面等有空的时候,又回过头来看了一下,为什么使用“AND”分隔的时候,会出现owner_code=0的奇怪结果?多次尝试之后发现:

等价于:

而 ('43212' and owner_name='李四') 是一个逻辑表达式,而这里不难知道owner_name并不是‘李四’。因此,这个逻辑表达式的结果为 false , false在MySQL中等价于0!

有道无术,术可成;有术无道,止于术

欢迎大家关注Java之道公众号

好文章,我在看❤️

mysql这样写update语句,劝退(代码片段)

...9;13245' and owner_name='张三';执行之前的记录是这样的:执行之后的记录是这样的:搜索公众号互联网架构师复“2T”,送你 查看详情

mysql触发器if语句update

...asdfromflkg';EXECUTE(@sqlz);----------首先,mysql下动态语句不是这样写的,另外,触发器里不能允许返回结果集的.这里我是希望他能中断更新!---------------------你的意思是不是要中断后面的"SETamount=@amountmmWHERECODE=new.codeANDwhcode=new.whcode... 查看详情

mysql中的update语句怎么写

...据时WHERE子句是非常有用的。参考技术A首先,单表的UPDATE语句:UPDATE[LOW_PRIORITY][IGNORE]tbl_nameSETcol_name1=expr1[,col_name2=expr2...][WHEREwhere_definition][ORDERBY...][LIMITrow_count]其次,多表的UPDATE语句:UPDATE[LOW_PRIORITY][IGNORE]table_referencesSETcol_name1=... 查看详情

参数校验这样写?就不会被劝退了(代码片段)

背景最近端午好久没有和二胖聚一聚了,于是约了二胖到人民广场去宰他一顿,正好最近他跳槽加薪了。<br/>我:二胖听说你最近跳槽了,并且还是从传统软件公司跳到了互联网公司,工资是不是涨了一点啊,今天你请客哈... 查看详情

参数校验这样写,就不会被劝退了。(代码片段)

背景最近端午好久没有和二胖聚一聚了,于是约了二胖到人民广场去宰他一顿,正好最近他跳槽加薪了。<br/>我:二胖听说你最近跳槽了,并且还是从传统软件公司跳到了互联网公司,工资是不是涨了一点啊,今天你请客哈... 查看详情

多表关联update语句怎么写呀?

...么写语句呀?updateA,BsetA.sj1=B.sj2wherea.hm1=b.hm1新手,不知道这样写对不对。参考技术AUPDATE多表更新(转)(2008-05-1215:29:04)转载标签:update多表更新sql分类:php网络编程在开发中,数据库来回换,而有些关键性的语法又各不相同,这是一... 查看详情

mysql语句模糊匹配删除或替换怎么写

...”模糊匹配“才能”替换成“可以”我只懂简单增删改查语句百度那些案例才复杂不是想要的来个简洁明了的sql命令-- 删除“才能”update db_centent set body = replace(body,'才能','');-- 替换为“可... 查看详情

mysql实现按条件更新数据

是这样,有一个表字段是“name”里面有信息。同一个表的字段“是否重复”里面无信息。如何通过sql语句判断“name”字段里的信息是否重复,重复就在“是否重复”里面插入1不重复就插入0参考技术Amysql对一个列中的数据统一... 查看详情

mysql中一个update语句如何去写

...于100那么就减去100再加30如果是小于100的就直接加30这个语句该怎么写求大神指点谢谢了首先,单表的UPDATE语句:UPDATE[LOW_PRIORITY][IGNORE]tbl_nameSETcol_name1=expr1[,col_name2=expr2...][WHEREwhere_definition][ORDERBY...][LIMITrow_count]其次,多表的UPDATE... 查看详情

sql里面的update更新语句数据怎么写?

...01'WHEREPRD_NO='AD001'依次类推一直改到AD007但是感觉这样太烦了,如果数据少还行,但是如果数据大的时候怎么办?想请高手们帮忙下,怎么写批量更新的语句.急SQL中Update语句的使用方法一、语句功能:语句用于修改表中的数据... 查看详情

在mysql中导入名为update.sql脚本,用shell实现,怎么写啊

...登录数据库导入sql格式即可。 参考技术C@/tmp/update.sql直接这样就能运行了 查看详情

oracle多个update语句怎么写

update表名set列名1=需要要更新的新值,列名2=需要要更新的新值,......where条件列名=值如:updatedbzx_dbsetyljje=r.yljjewherejsfzh=.sfzhorsfzh=r.sfzhandyljjeisnull参考技术A循环提交update语句。 查看详情

如何在一个 MySQL 查询中组合两个 UPDATE 语句?

】如何在一个MySQL查询中组合两个UPDATE语句?【英文标题】:HowdoIcombinetwoUPDATEstatementsinoneMySQLquery?【发布时间】:2011-06-0605:34:15【问题描述】:您好,如何在一个查询中执行两个UPDATE语句,例如:UPDATEalbumsSETisFeatured=\'0\'WHEREisFeatu... 查看详情

javaweb项目中用mysql如何实现update语句

...户信息修改功能,下面的代码是实现的javabean,不过mysql语句那出问题了,总报错,大家帮我看下这种java下的mysql该怎么写publicbooleanupdateUser(StringuserId,Stringusername,Stringpassword,Stringemail,Stringgrade)booleanb=false;tryconn=newconnDb().getConn();st=c... 查看详情

javaweb项目中用mysql如何实现update语句

...户信息修改功能,下面的代码是实现的javabean,不过mysql语句那出问题了,总报错,大家帮我看下这种java下的mysql该怎么写publicbooleanupdateUser(StringuserId,Stringusername,Stringpassword,Stringemail,Stringgrade)booleanb=false;tryconn=newconnDb().getConn();st=c... 查看详情

mysql索引问题

...t;100或者seq<100这个那么怎么建立索引比较好呢?为什么这样会好呢?1.首选数据库都会有自动优化查询计划的能力,在语句一中,明显对seq进行了排序,而is_need_udate用in进行范围查询,使用ind 查看详情

java下连接mysql数据库——更新语句——update

SQL语句是诸如update,insert的更新语句,应该用statement的execute()方法。   packagerjcs;importjava.sql.*;publicclasslianjmysql{//MySQL8.0以下版本-JDBC驱动名及数据库URLstaticfinalStringJDBC_DRIVER="com.mysql.jdbc.Drive 查看详情

mysql子查询怎么写?

...学号查出来??该怎么写?参考技术A子查询指一个查询语句嵌套在另一个查询语句内部的查询,这个特性从MySQL4.1开始引入,在SELECT子句中先计算子查询,子查询结果作为外层另一个查询的过滤条件,查询可以基于一个表或者多... 查看详情