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

MySQL中如何按同列不同变量计算并新增列值?

解决方法

你的问题出在两个核心点:

  • 新列new_yield设为INT类型,会直接丢弃原yield列的小数部分,导致精度丢失
  • UPDATE语句的CASE逻辑仅赋值固定数值(20/-10),没有和原yield字段执行预期的加减运算

正确操作步骤

  1. 添加匹配精度的新列
    原yield是DECIMAL(5,2),加减操作后数值范围会扩大,建议新列使用DECIMAL(7,2)(足够容纳运算后的结果):
ALTER TABLE mydatabase.crop_yield ADD COLUMN new_yield DECIMAL(7, 2);
  1. 按变量类型执行运算并更新
    在CASE语句中结合原yield字段完成加减操作:
UPDATE mydatabase.crop_yield
SET new_yield = CASE
    WHEN variable = 'Control' THEN yield + 20
    WHEN variable = 'Treatment' THEN yield - 10
    ELSE yield  -- 若存在其他未知变量,保留原始值,可按需调整
END;

验证结果

执行查询确认运算效果:

SELECT id, replicate, variable, yield, new_yield FROM mydatabase.crop_yield;

此时Control组的new_yield为原yield加20,Treatment组为原yield减10,且小数精度完全保留。

内容的提问来源于stack exchange,提问作者J.K Kim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 19:32:14