美文网首页
关于MySQL的执行UPDATE语句错误的使用“和”替代“”作为

关于MySQL的执行UPDATE语句错误的使用“和”替代“”作为

作者: 勤奋的码农 | 来源:发表于2019-03-24 21:31 被阅读0次

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

执行错误的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语句错误的使用“和”替代“”作为

      本文链接:https://www.haomeiwen.com/subject/hmupvqtx.html