Update Sql语句的写法

有一次,我想更新一条记录的几个字段,将SQL写成了下面的样子。

update table1 set column1 = 'value1' and column2 = 'value2' and column3 = 'value3' where id   = 3;

我的本意,是想将表 table1 中 id = 3的这行,将column1, column2, column3改为新的值。

然而,执行的结果,却只将column1的值改为了0。不但column2和column3的值没有改,而且column1的值改的也不对。

后来,自己查了一下update语句的写法,发现正确的写法如下。

update table1 set column1 = 'value1' , column2 = 'value2' , column3 = 'value3' where id   = 3;

也就是,设置多个列的值时,中间用逗号隔开,而不是and。

事后,我分析了一下,第一次的SQL为什么是那样的效果呢。

原来,第一次SQL,实际执行的是下面的逻辑。

update table1 set column1 = ('value1' and column2 = 'value2' and column3 = 'value3') where id   = 3;

找到id=3的行,判断这一行的column2是否等于value2,column3是否等于value3,两个的结果再和value1一起相与,并将结果赋值给column1.

语法虽然没错,但执行逻辑完全变了。

©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页