Mysql 您的SQL语法有问题,但不知道原因

Mysql 您的SQL语法有问题,但不知道原因,mysql,sql,Mysql,Sql,您的SQL语法有错误;检查手册 对应于要使用的正确语法的MariaDB服务器版本 在6号线附近 我没能找到这个错误的原因 在插入中,括号应用于列出列,而不是用于生成数据的查询 在本例中,您似乎知道数据具有相同的格式,因此不使用列列表是可以的——尽管创建表as比插入更好 无论如何: INSERT INTO tkblue_tklabel_dev_archdata.EmailContent2016 ( SELECT tkblue_tklabel_dev_data.EmailContent.*

您的SQL语法有错误;检查手册 对应于要使用的正确语法的MariaDB服务器版本 在6号线附近

我没能找到这个错误的原因

在插入中,括号应用于列出列,而不是用于生成数据的查询

在本例中,您似乎知道数据具有相同的格式,因此不使用列列表是可以的——尽管创建表as比插入更好

无论如何:

INSERT INTO tkblue_tklabel_dev_archdata.EmailContent2016
(
    SELECT tkblue_tklabel_dev_data.EmailContent.*
    FROM tkblue_tklabel_dev_data.EmailContent
    LEFT JOIN tkblue_tklabel_dev_archdata.EmailTracking ON tkblue_tklabel_dev_archdata.EmailTracking.id = tkblue_tklabel_dev_data.EmailContent.idEmailParam
    WHERE (tkblue_tklabel_dev_archdata.EmailTracking.EmailDate <= "2016-12-31 23:59:59" and tkblue_tklabel_dev_archdata.EmailTracking.EmailDate >= "2016-01-01 00:00:00"); 
);

您需要删除分号>=2016-01-01 00:00:00;在路的尽头,在哪里line@nacho我认为这可能是一个答案
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';
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'
                 );