Подтвердить что ты не робот

Быстро добавьте копию столбца в таблицу MySQL.

Мне нужен быстрый способ дублировать столбец DATETIME в таблице и дать ему новое имя.

У меня есть столбец с именем myDate в моей таблице с именем myResults, мне нужен запрос, чтобы создать новый столбец в таблице с именем newDate, который имеет те же данные, что и столбец myDate.

Есть ли более быстрый способ сделать это, чем сделать очевидный двухэтапный подход сделать новый столбец, а затем скопировать все данные (это большая таблица, и я ищу самый быстрый подход)?

Очевидное решение:

ALTER TABLE `myResults` ADD `newDate` DATETIME;  
UPDATE `myResults` SET `newDate` = `myDate`;
4b9b3361

Ответ 1

Очевидным решением является, к сожалению, единственное решение.

Однако обратите внимание, что в общем случае вы не должны копировать столбец в реляционных базах данных.

Ответ 2

UPDATE `table_name` SET `new_column` = `existing_column` WHERE `id`=`id`

Ответ 3

Почему ваша рабочая нагрузка когда-либо требовала нового столбца datetime, который дублирует другие данные столбцов? Это звучит как ужасная практика? Как насчет того, чтобы сказать нам, чего вы пытаетесь достичь? Вы можете вывести второй столбец с одними и теми же данными несколькими способами, не дублируя данные:

SELECT date1 AS date_old, date1 AS date_new FROM table;

-или-, вы можете создать представление

CREATE VIEW virtual_table AS
    SELECT date1 AS date_old, date1 AS date_new FROM table
;
SELECT * FROM virtual_table;

Ответ 4

Если вам просто нужен дефолт, вы можете либо выбрать статическое значение по умолчанию, либо использовать вызов функции.

ALTER TABLE `myResults` ADD `newDate` DATETIME DEFAULT '2010-01-01';

или

ALTER TABLE `myResults` ADD `newDate` DATETIME DEFAULT current_timestamp;