You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MySQL中为不同行的同一列减去不同数值?

实现MySQL不同行更新同一列减不同数值的方法

方法一:使用CASE条件表达式

这是针对少量行最直接的实现方式,通过CASE语句根据id匹配对应的减法规则:

UPDATE `posts` 
SET `calc` = CASE 
    WHEN `id` = 1 THEN calc - 1
    WHEN `id` = 2 THEN calc - 2
END
WHERE `id` IN (1, 2);

WHERE子句限定只更新目标行,避免无关数据被误修改;CASE分支会逐行匹配id,执行对应的数值减法。

方法二:使用JOIN关联更新

如果需要更新的行数量较多,或者规则可以通过数据集定义,用JOIN的方式扩展性更强:

UPDATE `posts`
JOIN (
    SELECT 1 AS id, 1 AS subtract_val
    UNION ALL
    SELECT 2 AS id, 2 AS subtract_val
) AS update_data ON `posts`.`id` = update_data.id
SET `posts`.`calc` = `posts`.`calc` - update_data.subtract_val;

通过子查询构造包含id和对应要减数值的临时数据集,与原表关联后直接批量执行更新。后续需要新增规则时,只需在子查询里添加UNION ALL的行即可。

内容的提问来源于stack exchange,提问作者Ft Games

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 05:14:54