#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.