Mysql 的update and操作 容易搞混导致出错

本文解析了在使用SQL UPDATE语句批量修改多个字段时,因语法错误导致数据未按预期更新的问题。通过对比‘and’与逗号的使用,阐述了如何避免将更新条件误写为逻辑运算符,确保数据正确更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用sql语句在对多个值update 时,有时可能误将’,’ 写成了’and’。
先看看两个语句的区别,我们目的要将beijing 表id<=2 的uid gid 的值各+1000 :

#1 update beijing set uid = uid + 1000 and gid = gid + 1000 where id <= 2 ;
#2 update beijing set uid = uid + 1000, gid = gid + 1000 where id <= 2 ;

1、首先看数据:
在这里插入图片描述
2、#1的update操作,Query OK,匹配了2条并变更了2条。并且NO warnings; 这时候我们可能认为SQL执行正确。如下图:
在这里插入图片描述

再看select beijing表,id<=2 的uid=0 , 而gid 没有变化,显然不是我们想要的结果。如下图:
在这里插入图片描述

3、为什么会产生错误的结果呢? 我们看下面SQL,MySQL将“uid+1000 and gid=gid+1000”的值赋给了uid,“uid+1000 and gid=gid+1000”这个条件为假,MySQL中假即=0 ,从而导致了uid 赋值为0 而gid 并未更新

在这里插入图片描述

4、正确的写法如#2 update beijing set uid=uid+1000 , gid=gid+1000 where id <=2 ;

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值