“在(1,2,3)中设置a=2和b”是有效的mysql语法吗

m4pnthwp  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(261)

在set子句中使用“and”代替“where”是否有效?我最近发现了一个关键的约束错误,但它已经存在了一段时间,据我所知从来都不是问题。

update table1
    join table2 on
        table1.id = table2.id
set table1.foo = 2
    and table1.bar in (1,2,3)

我把最后一个“和”设为“where”,代码就起作用了。据我所知,它更新的值不会导致键约束。
编辑:更新查询以使其更接近原始查询,但相同的原则适用。

pokxtpni

pokxtpni1#

and 不能与一起使用 set 但可以与 where 更新表\u name set column1=value1,column2=value2。。。何处条件;
因此您的sql需要更改:

update table1
    join table2 on
        table1.id = table2.id
set table1.foo = 2,table1.bar = 2
s5a0g9ez

s5a0g9ez2#

改变现状 andwhere 进行两个完全不同的查询。您的where版本会在bar值等于2的所有行上将foo设置为2。如果and版本有效,那么它最多只能将foo设置为 (2 AND (bar is equal to 2)) ,对于所有行。

相关问题