Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL语法错误(这是全新的)_Mysql_Sql - Fatal编程技术网

MySQL语法错误(这是全新的)

MySQL语法错误(这是全新的),mysql,sql,Mysql,Sql,当我运行以下查询时: SELECT MONTHNAME( start_date_time ) AS MONTH, SUM ( CASE WHEN YEAR( start_date_time ) = '2011' AND YEAR( u.registered) = '2011' THEN oi.qty END ) AS '2011', SUM ( CASE WHEN YEAR( start_date_time ) = '2012' AND YEAR( u.registered) = '2012

当我运行以下查询时:

SELECT MONTHNAME( start_date_time ) AS
MONTH, SUM (
CASE WHEN YEAR( start_date_time ) = '2011' AND YEAR( u.registered) = '2011'
THEN oi.qty
END )
AS '2011', SUM (


CASE WHEN YEAR( start_date_time ) = '2012' AND YEAR( u.registered) = '2012'
THEN oi.qty
END )
AS '2012',  SUM (


CASE WHEN YEAR( start_date_time) = '2013' AND YEAR( u.registered) = '2013'
THEN oi.qty
END )
) AS '2013' 

FROM order_items oi INNER JOIN events e ON oi.eventid = e.eventid INNER JOIN company_campaign ON e.event_campaign_id = company_campaign.campaignid
     INNER JOIN company
          ON company.companyid = company_campaign.companyid
     INNER JOIN users u
          ON u.userID = company.createdby
WHERE start_date_time > '2011-01-01 00:00:00'
GROUP BY MONTH
ORDER BY MONTH( start_date_time ) ASC
我得到一个错误:

1064-您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解第18行的order_items oi internal JOIN events e ON oi.eventid=e.eventid中使用“near”)作为“2013”的正确语法


我对SQL完全陌生,加入SQL代表了我迄今为止最大的成就,但这完全难住了我。有时我用错了“但这是正确的”。有时我在查询的末尾加上一个。我使用的MySQL 5.5看起来像是一个额外的右括号(就在2013年之前)导致了这种情况

尝试:


“截至2013年”之前的超紧括号

)“2013年”

去掉那个,应该没问题

只是补充一下——如果你把括号内的部分分开,阅读查询总是容易得多。这会花费更长的时间并增加更多的行数,但这会使其他人或自己在将来再次阅读时更容易阅读(并发现语法问题)

e、 g.这样写,问题出在哪里就显而易见了-

SELECT 
MONTHNAME( start_date_time ) AS MONTH, 
SUM 
(
    CASE WHEN YEAR( start_date_time ) = '2011' AND YEAR( u.registered) = '2011'
    THEN oi.qty
    END 
) AS '2011', 
SUM 
(
    CASE WHEN YEAR( start_date_time ) = '2012' AND YEAR( u.registered) = '2012'
    THEN oi.qty
    END 
) AS '2012',  
SUM 
(
    CASE WHEN YEAR( start_date_time) = '2013' AND YEAR( u.registered) = '2013'
    THEN oi.qty
    END 
)
) AS '2013' 

看起来好像有人抢先了我,其他答案也是正确的。谢谢。这个错误已经消失了,但是我收到了另一个错误,说db.sum不存在,这里的问题是在sum和之间使用了一个空格(我删除了它,现在工作得很好!谢谢大家)。
SELECT 
MONTHNAME( start_date_time ) AS MONTH, 
SUM 
(
    CASE WHEN YEAR( start_date_time ) = '2011' AND YEAR( u.registered) = '2011'
    THEN oi.qty
    END 
) AS '2011', 
SUM 
(
    CASE WHEN YEAR( start_date_time ) = '2012' AND YEAR( u.registered) = '2012'
    THEN oi.qty
    END 
) AS '2012',  
SUM 
(
    CASE WHEN YEAR( start_date_time) = '2013' AND YEAR( u.registered) = '2013'
    THEN oi.qty
    END 
)
) AS '2013'