Mysql更新查询-如果超出范围,则设置为零

Mysql更新查询-如果超出范围,则设置为零,mysql,Mysql,问题是一些用户没有10000个项目要扣除,我得到了超出范围的错误。如果用户没有10000个项目,则如何调整查询?项目将设置为0?您可以通过以下方法进行调整: 您可以通过以下方式执行此操作: 当items>10000时不会避免双重计算吗?@Shimrod你是指何时何地?我认为@Shimrod的意思是当items>10000时,那么items-10000 ELSE 0结束只是为了避免计算两次减法。但我认为这可能是微观优化。是的,这就是我的意思。当然,这是一种微观优化,但不会有什么害处,如果数量发生变

问题是一些用户没有10000个项目要扣除,我得到了超出范围的错误。如果用户没有10000个项目,则如何调整查询?项目将设置为0?

您可以通过以下方法进行调整:

您可以通过以下方式执行此操作:


当items>10000时不会避免双重计算吗?@Shimrod你是指何时何地?我认为@Shimrod的意思是当items>10000时,那么items-10000 ELSE 0结束只是为了避免计算两次减法。但我认为这可能是微观优化。是的,这就是我的意思。当然,这是一种微观优化,但不会有什么害处,如果数量发生变化,只需要改变1个位置:-当项目>10000时,不会避免重复计算吗?@Shimrod你是指何时或何地?我认为@Shimrod的意思是当项目>10000时,那么项目-10000否则0结束,只是为了避免计算两次减法。但我认为这可能是微观优化。是的,这就是我的意思。当然,这是一种微观优化,但不会造成伤害,如果数字发生变化,只需改变1个位置:-
UPDATE users SET items=items-10000;
UPDATE users 
SET items=CASE 
  WHEN items-10000 < 0 
  THEN 0 
  ELSE items-10000 
END;
UPDATE users SET items=GREATEST(items-10000, 0);