Mysql Update语句 SET多字段时,使用 逗号连接和AND连接的区别

对于有经验的程序员都知道正常的UPDATE语句的格式应该是如下所示:

但往往一些经验比较欠缺的选手(就比如说我...)中在写SQL的时候,并无法瞬间写出标准格式的SQL语句。下面我就简单描述下我的个人经历!

表结构和表数据如下所示:

CREATE TABLE `coupon_pool` (
  `id` int(12) NOT NULL AUTO_INCREMENT,
  `pub_id` varchar(12) NOT NULL COMMENT '',
  `serialno` varchar(32) NOT NULL DEFAULT '' COMMENT '',
  `name` varchar(50) NOT NULL COMMENT '',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8 COMMENT='测试表';

-- ----------------------------
-- Records of coupon_pool
-- ----------------------------
INSERT INTO `coupon_pool` VALUES ('10', '2017031901', '20170319010001', '名字1' );
INSERT INTO `coupon_pool` VALUES ('11', '2017031901', '20170319010002', '名字2');
INSERT INTO `coupon_pool` VALUES ('12', '2017031901', '20170319010003', '名字3');
INSERT INTO `coupon_pool` VALUES ('13', '2017031901', '20170319010004', '名字4');
INSERT INTO `coupon_pool` VALUES ('14', '2017031901', '20170319010005', '名字5');

现在我要将id为10的记录的serialno和name字段分别更新为20170319010010和名字10。

正确的UPDATE SQL语句,需要更新的字段之间使用逗号连接,如下所示:

UPDATE coupon_pool SET serialno = '20170319010010' , name = '名字10'  WHERE id = 10;

SQL执行结果如图:

测试使用的UPDATE SQL语句,使用AND来连接两个字段,如下所示:

UPDATE coupon_pool SET serialno = '20170319010010' AND name = '名字10'  WHERE id = 10;

更新结果serialno被更新为了0,name字段并没有发生改变!!!

为什么会出现这种结果呢???

现在我们换个测试语句再试下(记得将刚才更新过的数据serialno和名字 修改为原先的数据 serialno=20170319010001,name=名字1

UPDATE coupon_pool SET serialno = '20170319010001' AND name = '名字1'  WHERE id = 10;

serialno更新为了1,此时我相信比较牛逼的选手已经知道是怎么回事了吧!!!

如果还不知道怎么回事的话,打开Mysql,输入SHOW VARIABLES LIKE 'sql_mode';

然后再看下逻辑运算符 AND OR,应该就已经知道Mysql为什么允许执行用AND连接的SQL语句,以及Mysql再执行这种SQL语句的时候,实际如何解析的。

说到这里,还有不懂的兄弟的话,就留言吧。  2333333333


xdm,快活不下去了,弄了一个领外卖红包的公众号,大家点外卖的时候,先在公众号里面领下优惠券,支持一波。

 

  • 23
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
### 回答1: MySQL中的UPDATE语句用于更新表中的现有记录。它的语法如下: ``` UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition; ``` 其中,table_name是要更新的表名,column1、column2等是要更新的列名,value1、value2等是要更新的新值,condition是指定更新哪些记录的条件。 例如,如果我们想将一个名为"users"的表中id为1的记录的name字段更新为"John",那么可以使用以下语句: ``` UPDATE users SET name = 'John' WHERE id = 1; ``` 这将更新id为1的记录的name字段为"John"。 ### 回答2: MySQLupdate语句用于修改一个或多个表中的数据。它可以用来更新表中的一行或多行数据,也可以更新特定列或所有列。 语法如下: UPDATE 表名 SET 列名1=新值1, 列名2=新值2, ... WHERE 条件; 其中,表名是要更新数据的表的名称; SET子句指定要更新的列和其新值; WHERE子句是可选的,用于指定更新的条件。 举个例子: 假设有一个学生表Student,包含学号、姓名和年龄三列。我想将学号为001的学生年龄更新为20岁,可以使用以下SQL语句UPDATE Student SET Age=20 WHERE StudentID='001'; 如果我想将所有学生的年龄更新为20岁,可以将WHERE子句省略: UPDATE Student SET Age=20; 除了直接给出新值,我们还可以使用一些函数或表达式来计算新值。例如,我们可以使用DATE_ADD函数来将学生的生日加上一年,并更新年龄: UPDATE Student SET Age=DATEDIFF(CURDATE(), Birthdate)/365 WHERE StudentID='001'; 注意:在使用update语句,请谨慎使用WHERE子句,确保只更新到目标行,以免意外修改其他行的数据。同update语句会立即生效,所以在执行前,请确认要更新的数据和条件是正确的。 ### 回答3: MySQLUPDATE语句用于修改表中已存在的记录。它可以用来更新单个或多个字段的值,以及根据指定的条件更新满足条件的记录。 UPDATE语句的基本语法如下: UPDATE 表名 SET 列名1 = 值1, 列名2 = 值2 WHERE 条件; 其中,表名代表要更新的表的名称,列名1和列名2代表要更新的字段名,值1和值2代表要更新的字段的新值,WHERE子句用于指定更新的条件。 举个例子,假设有一个名为students的表,其中包含两个字段,分别是name和age。我们想要将姓名为"张三"的学生的年龄修改为18岁,可以使用以下的UPDATE语句UPDATE students SET age = 18 WHERE name = '张三'; 这条语句会在students表中查找姓名为"张三"的记录,并将其年龄字段的值更新为18。 如果想要同更新多个字段的值,可以使用逗号分隔每个字段的更新。例如,假设我们要将"李四"的年龄更新为20岁,姓名更新为"王五",可以使用以下语句UPDATE students SET age = 20, name = '王五' WHERE name = '李四'; 这条语句会找到姓名为"李四"的记录,并将其年龄字段的值更新为20,姓名字段的值更新为"王五"。 总之,UPDATE语句MySQL中用于更新表中记录的关键字,可以通过设置要更新字段的新值和条件来实现对数据的修改。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值