MySQL: скопировать таблицу в другую таблицу с дополнительным столбцом

У меня есть две таблицы, tab1 и tab2.

tab2 содержит все столбцы tab1, но с дополнительным столбцом для метки времени. Что я хочу сделать, так это скопировать все строки из tab1 в tab2 и ввести один и тот же столбец метки времени для всех строк, которые я вставляю. Я могу получить и ввести время в порядке, но я не понимаю, как копировать и вставлять данные и заполнять последний столбец отметкой времени для всех вставленных строк.

Итак, я хочу сделать:

Insert into tab2 select * from tab1

но я также хочу добавить данные для этого последнего столбца на вкладке 2, как я могу это сделать?


person Cristian Navarrete    schedule 23.02.2017    source источник


Ответы (1)


Вы можете добавить метку времени в список выбора, чтобы списки столбцов обеих таблиц совпадали:

INSERT INTO tab2
SELECT *, CURRENT_TIMESTAMP()
FROM   tab1

EDIT
Чтобы ответить на вопрос в комментарии, вам не нужно использовать CURRENT_TIMESTAMP(). Подойдет любое выражение, возвращающее метку времени. Вы можете использовать жестко закодированную временную метку:

INSERT INTO tab2
SELECT *, TIMESTAMP('2017-07-07 19:43:00')
FROM   tab1
person Mureinik    schedule 23.02.2017
comment
Отличная идея, но я не обязательно хочу получать текущее время и использовать его. Если бы я хотел ввести статическое значение, как бы я это сделал? Могу ли я заменить CURRENT_TIMESTAMP() на что-то вроде 2017-07-07 19:43:00? - person Cristian Navarrete; 24.02.2017
comment
Я остановился на INSERT INTO tab1 SELECT * , '07/07/07 19:43:00' FROM tab1. Спасибо - person Cristian Navarrete; 25.02.2017