2016-01-13 65 views
0

我一直收到此查询的语法错误。我试图找出行的计数,其中:左连接查询的Mysql语法错误

1)列earnings_campaign_free_id = 43

2)列earnings_campaign_paid_id = 43

所以两个输出:paid_views,free_views

SELECT 

cp.campaign_paid AS paid_views 
cf.campaign_free AS free_views 

FROM 

(
    SELECT COUNT(earning_paid_campaign_id) AS campaign_paid 
    FROM earnings 
    WHERE earning_paid_campaign_id = 43 
) cp 

LEFT JOIN 

(
    SELECT COUNT(earning_free_campaign_id) AS campaign_free 
    FROM earnings 
    WHERE earning_free_campaign_id = 43 
) cf 

ON cf.earning_campaign_free_id = cp.earning_paid_campaign_id 

这是错误:

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

near 'cf.campaign_free AS free_views

FROM

( SELECT COUNT(earning_paid_campaign_i' at line 4

怎么办我修复这个错误?

+3

你在'as paid_views'后面''''' – Jens

回答

2

试试这个。

SELECT 

cp.campaign_paid AS paid_views, 
cf.campaign_free AS free_views 

FROM 

(
    SELECT earning_paid_campaign_id,COUNT(earning_paid_campaign_id) AS campaign_paid 
    FROM earnings 
    WHERE earning_paid_campaign_id = 43 
) cp 

LEFT JOIN 

(
    SELECT earning_campaign_free_id,COUNT(earning_free_campaign_id) AS campaign_free 
    FROM earnings 
    WHERE earning_free_campaign_id = 43 
) cf 

ON cf.earning_campaign_free_id = cp.earning_paid_campaign_id 

您试图加入的ON cf.earning_campaign_free_id = cp.earning_paid_campaign_id基础,但是,当你写sub query然后mysql创建temporary表,你没有选择该ID。所以发生错误

+1

你也错过了逗号。会给错误:) –

+0

我错过了吗? –

+1

@rohit 我纠正它谢谢你,我的查询是正确的:) –