在MySQL中,如何添加一个新列,该列根据同一列中的不同变量计算不同的值?

3npbholx  于 2023-10-15  发布在  Mysql
关注(0)|答案(1)|浏览(110)

我创建了一个数据表。

CREATE DATABASE IF NOT EXISTS mydatabase;
USE mydatabase;

CREATE TABLE crop_yield (
    id INT AUTO_INCREMENT PRIMARY KEY,
    replicate INT,
    variable VARCHAR(15),
    yield DECIMAL(5, 2)
);

INSERT INTO crop_yield (replicate, variable, yield) VALUES
    (1, 'Control', 116.08),
    (2, 'Control', 132.85),
    (3, 'Control', 115.98);

INSERT INTO crop_yield (replicate, variable, yield) VALUES
    (1, 'Treatment', 131.37),
    (2, 'Treatment', 108.89),
    (3, 'Treatment', 100.35);

select * from mydatabase.crop_yield;

现在,我想加/减或乘/除产量,但根据不同的变量。
例如,我想在Control中增加20,在Treatment中减少10。所以我使用了下面的代码。

ALTER TABLE mydatabase.crop_yield ADD COLUMN new_yield INT;

UPDATE crop_yield
SET new_yield = CASE
    WHEN variable='Control' THEN 20
    WHEN variable='Treatment' THEN -10
    ELSE 0
END;

然而,它并不起作用。你能告诉我如何根据每个变量计算新的值吗?

kgsdhlau

kgsdhlau1#

你只需要在“然后”部分包括原始收益率.

ALTER TABLE mydatabase.crop_yield    
ADD COLUMN new_yield INT;

UPDATE crop_yield
SET new_yield = CASE
    WHEN variable='Control' THEN yield+20
    WHEN variable='Treatment' THEN yield-10
    ELSE yield
END;

相关问题