繁体   English   中英

如何在MYSQL中的表中添加填充值的列

[英]How to add a column fill with values to the table in MYSQL

我有一个列年龄的表。 我这样分类这个年龄列

select 
CASE WHEN age>60 THEN 'old'
WHEN age between 30 and 60 THEN 'middled age'
WHEN age between 20 and 30 THEN 'young'
WHEN age between 13 and 20 THEN 'teen'
else 'kid'
end as age_category
from customer

现在我希望将此age_category添加到customer表中。 所以我创建了一个空列

ALTER table customer add column age_category varchar; 

接下来我想用值填充它,所以我尝试使用 insert 命令添加第一个语句的输出,如下所示

INSERT INTO customer (age_category) values
(SELECT
CASE WHEN age>60 THEN 'old'
WHEN age between 30 and 60 THEN 'middled age'
WHEN age between 20 and 30 THEN 'young'
WHEN age between 13 and 20 THEN 'teen'
ELSE'kid'
END as age_category
FROM customer)

但它没有用

我想你想在这里更新,而不是插入:

UPDATE customer
SET age_category = CASE WHEN age >= 60 THEN 'old'
                        WHEN age >= 30 THEN 'middle aged'
                        WHEN age >= 20 THEN 'young'
                        WHEN age >= 13 THEN 'teen'
                        ELSE 'kid' END;

但是,鉴于age_category是派生数据,您可能需要考虑将其存储为列。 原因是,只要age数据发生变化(通过更新/插入),您就必须重新生成age_category值。 如果您使用的是 MySQL 8+,另一种选择可能是使用生成的列。

添加生成的列。

ALTER TABLE customer 
ADD COLUMN age_category VARCHAR(255) 
    GENERATED ALWAYS AS ( CASE WHEN age > 60 THEN 'old'
                               WHEN age > 29 THEN 'middle aged'
                               WHEN age > 19 THEN 'young'
                               WHEN age > 12 THEN 'teen'
                               ELSE 'kid' 
                               END ); 

如果age列值发生更改,则此生成列的值会自动更改。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM