正确的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);

<div class="image-package">
<div class="image-container" style="max-width: 384px;max-height: 144px">

<div class="image-view" data-width="384" data-height="144"><img src="/wp-content/uploads/2021/03/frc-3e85eb7e54f1d07f3ea43e247db67bff.jpeg"></div>
</div>
<div class="image-caption"></div>
</div>

执行错误的UPDATE语句

“`UPDATE用户SET年龄= 30 AND user_name =’lisi’WHERE id = 1“`

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

然而实际执行结果

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

在执行一条语句

“`UPDATE用户SET年龄= 30 AND user_name =’zhangsan’WHERE id = 1“`

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

年龄字段变成了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

文章来源于互联网:关于MySQL的执行UPDATE语句错误的使用“和”替代“”作为连接符

发表评论