В INSERT
круглые скобки должны использоваться для перечисления столбцов, а не для запроса, генерирующего данные.
В этом случае вы, похоже, знаете, что данные имеют одинаковый формат, поэтому не рекомендуется использовать список столбцов - хотя create table as
будет лучше, чем insert
.
* 1007.* В любом случае:
INSERT INTO tkblue_tklabel_dev_archdata.EmailContent2016
SELECT ec.*
FROM tkblue_tklabel_dev_data.EmailContent ec JOIN
tkblue_tklabel_dev_archdata.EmailTracking et
ON et.id = ec.idEmailParam
WHERE et.EmailDate < '2017-01-01' AND
et.EmailDate >= '2016-01-01';
Я также ввел псевдонимы таблиц, которые облегчают написание и чтение запроса.Это также упрощает логику даты.
Это также меняет JOIN
на внутреннее соединение - в любом случае это делает предложение WHERE
.
Для предотвращения дублирования, вызванного JOIN
, Я бы использовал EXISTS
вместо:
INSERT INTO tkblue_tklabel_dev_archdata.EmailContent2016
SELECT ec.*
FROM tkblue_tklabel_dev_data.EmailContent ec
WHERE EXISTS (SELECT 1
FROM tkblue_tklabel_dev_archdata.EmailTracking et
WHERE et.id = ec.idEmailParam AND
et.EmailDate < '2017-01-01' AND
et.EmailDate >= '2016-01-01'
);