Mysql Вставляет данные в новый столбец с помощью запроса select

#mysql

#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.То, что вы описываете, является UPDATE (не INSERT ).

2. Вам нужны не INSERT новые строки, а UPDATE существующие, добавляя значения в новый столбец…

3. @UsagiMiyamoto спасибо, я только что осознал свою ошибку

Ответ №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_date и during , вы могли бы создать виртуальный столбец:

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

Комментарии:

1. Спасибо, я работаю, сэр 🙂 Я застрял, потому что я думаю, что запрос, который должен быть выполнен, это Insert.