mysql insert update 同时执行_关于MySQL的执行UPDATE语句错误的使用“和”替代“”作为连接符...

ad15bac379a38720ba393305427e8251.png

正确的UPDATE语句:

UPDATE table_name 
SET column1 = value1,column2 = value2,... 
WHERE condition_column = condition_value

错误的写成:

UPDATE table_name SET column1 = value1 AND column2 = value2 WHERE condition_column = condition_value

这造成了一些小麻烦

举例:

CREATE TABLE`user`(
`id` int(5)NOT NULL AUTO_INCREMENT,
`user_name` varchar(500)NOT NULL DEFAULT'',
`age` tinyint(4)NOT NULL 
DEFAULT'0 ',PRIMARY KEY(`id` )
)ENGINE = InnoDB DEFAULT CHARSET = utf8

新增一条记录

INSERT INTO user(user_name,age)VALUES('zhangsan',20);

e38b89d3dbefd046f2f6c4b979977145.png

执行错误的UPDATE语句

UPDATE用户SET年龄= 30 AND user_name ='lisi'WHERE id = 1

期望结果是将ID = 1的这条记录中USER_NAME列更新为“丽丝”,年龄列更新为“30”

然而实际执行结果

0151f7d865c9a3a15141e6744c29511f.png

实际结果是USER_NAME字段没有被更新,年龄字段则被更新成了0

在执行一条语句

UPDATE用户SET年龄= 30 AND user_name ='zhangsan'WHERE id = 1

这次执行的语句与之前唯一不同的是这次要更新的用户名与当前行中的用户名值相同

043a93daa41fc22e836d343199ceb839.png

年龄字段变成了1

MySQL的解析逻辑30与user_name ='zhangsan'

第一次user_name ='lisi',假,所以更新为0

第二次user_name ='zhangsan',真,所以更新为1

我们利用查询语句也能得出结论

SELECT 30 AND user_name ='zhangsan'column1,30&user_name ='lisi'column2 FROM user

4fa086c5f8f7c0f0c29fe43836a41852.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值