2017-03-27 25 views
0

我想运行一个子查询到从另一个database.While的表我运行此查询我收到以下错误收集到的数据将数据插入数据库的表:什么不对的子查询

1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use

near 'SELECT * FROM campaign_traffic_db.campaign_merge WHERE adform_clientID = 135456 ' at line 1

INSERT 
INTO 
    135456_1257994024297010.campaign_merge(
    adform_client, 
    adform_clientID, 
    adform_campaign, 
    adform_campaignID, 
    adform_campaignStartDate, 
    adform_campaignEndDate, 
    adform_campaignCurrency, 
    adform_cost, 
    adform_clicks, 
    adform_ctr, 
    adform_impression, 
    fb_client, 
    fb_clientID, 
    fb_campaign, 
    fb_campaignID, 
    fb_campaignStartDate, 
    fb_campaignEndDate, 
    fb_cost, 
    fb_clicks, 
    fb_impression, 
    created_at, 
    updated_at 
) 
VALUES (
SELECT 
    * 
FROM 
    campaign_traffic_db.campaign_merge 
WHERE 
    adform_clientID = '135456' AND fb_clientID = '1257994024297010') 
+2

删除'值(''只是INSERT(..)SELECT ... FROM ...;'[文档在这里(HTTPS:// dev.mysql.com/doc/refman/5.7/en/insert-select.html) – JNevill

+0

为什么会这样?我在使用过类似的语法之前使用过类似的语法,可以解释一下吗? –

+0

我真诚地怀疑你已经使用过像INSERT INTO

(..)VALUES(SELECT ... FROM)这样的语法;'因为在任何RDBMS中都不支持这个功能,所以'INSERT INTO
VALUES(1,2,(select max(foo)from酒吧),4)'或者其他可能已经奏效的东西,尽管我不确定它会如何。 – JNevill

回答

0

作为后续行动,以我的意见之上,语法:

INSERT INTO <table> (f1, f2, f3) 
VALUES (SELECT f1, f2, f3 FROM <table2>); 

将无法​​工作。您要么使用VALUES(),要么提供SELECT语句,该语句返回与INSERT字段列表匹配的所需字段。

INSERT INTO 135456_1257994024297010.campaign_merge 
(
    adform_client, 
    adform_clientID, 
    adform_campaign, 
    adform_campaignID, 
    adform_campaignStartDate, 
    adform_campaignEndDate, 
    adform_campaignCurrency, 
    adform_cost, 
    adform_clicks, 
    adform_ctr, 
    adform_impression, 
    fb_client, 
    fb_clientID, 
    fb_campaign, 
    fb_campaignID, 
    fb_campaignStartDate, 
    fb_campaignEndDate, 
    fb_cost, 
    fb_clicks, 
    fb_impression, 
    created_at, 
    updated_at 
) 
SELECT * FROM campaign_traffic_db.campaign_merge 
WHERE adform_clientID = '135456' AND fb_clientID = '1257994024297010'; 

应该工作,假设在campaign_traffic_db.campaign_merge排队完美的与你在声明的INSERT部分字段列表中的字段。

文档关于insert ... SELECT可以发现here