当它在set子句中使用时,使用“and”代替“where”是有效的mysql吗?我最近跟踪了一个关键的约束错误,但它已经存在了一段时间,据我所知从未成为问题。
update table1
join table2 on
table1.id = table2.id
set table1.foo = 2
and table1.bar in (1,2,3)
我将最后一个“和”设置为“where”并且代码有效。据我所知,它的更新不会导致关键约束。
编辑: 更新了查询以更接近原始,但同样的原则适用。
答案 0 :(得分:2)
and
不能与set
一起使用,但可以与where
UPDATE table_name SET column1 = value1,column2 = value2,... WHERE 条件;
所以你的sql需要改变:
update table1
join table2 on
table1.id = table2.id
set table1.foo = 2,table1.bar = 2
答案 1 :(得分:1)
将and
更改为where
会产生两个完全不同的查询。您的WHERE版本会在所有行上将foo设置为2 其中条形值等于2. AND版本,如果有效,最多将foo设置为等于{{1}的布尔结果},对于所有行。