Mysql使用选择查询将数据插入新列

时间:2019-03-07 14:55:14

标签: mysql

我有这样的表结构

id     start_date      during
1      2018-01-01       2
2      2018-01-02       3

然后我想使用查询添加一个名为end_date的新列

SELECT 'start_date' + INTERVAL ('during')day as 'end_date'

然后结果变为end_date

end_date
2018-01-03
2018-01-05

我想在名为end_date的表中添加一个新列,然后再通过查询插入数据。在表格中创建新列后,我在下面的查询中插入了

INSERT INTO table_name(end_date) 
SELECT 'start_date' + INTERVAL ('during')day 

但是桌子会变成这样

id     start_date      during    end_date
1      2018-01-01       2         null
2      2018-01-02       3         null
3         null          null     2018-01-03 
4         null          null     2018-01-05

1 个答案:

答案 0 :(得分:1)

首先,您需要在表中添加一个新列:

ALTER TABLE `table_name`.`new_table` 
ADD COLUMN `end_date` DATE NULL AFTER `during`;

然后您可以应用插入内容:

UPDATE table_name SET end_date = start_date + INTERVAL(during) DAY; 

但是,如果始终从start_dateduring定义期间,则可以创建一个虚拟列:

ALTER TABLE `table_name`.`new_table` 
ADD COLUMN `end_date` `end_date` DATE GENERATED ALWAYS AS (
    start_date + INTERVAL(during) DAY) VIRTUAL ;