1、问题
更新时where条件缺失导致更新全表问题
2、错误sql
update order set `status`=1 in ('XX001','XX002','XX003');
-
错误分析:
更新整个
order
表,并没有限制更新的范围。原因是这个SQL语句在
IN
子句中没有提供任何条件,导致MySQL将IN
子句视为一个包含了所有order_id
值的列表。在这种情况下,IN
子句将始终返回TRUE
,因为'XX001'
、'XX002'
和'XX003'
等值都会被认为在这个列表中,而没有匹配的值也被视为在列表中。因为没有提供合适的条件来筛选需要更新的记录,所以整个
order
表的status
字段都会被设置为1。
3、正确sql
update order set `status`=1 where order_code in ('XX001','XX002','XX003');
标签:status,mysql,更新,全表,子句,where,order
From: https://www.cnblogs.com/pine007/p/17560864.html