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'