我正在尝试让我的MySQL表返回给定年份中每个成员的总金额。下面是我写的SQL查询
SELECT First_name, last_name, (SELECT SUM(amount)
FROM contributions
WHERE contributions.memberid = members.memberid AND year = '2013') AS amount FROM members
我收到此错误
MySQL错误#:1064
您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第2行的''附近使用正确的语法
我正在使用MySQL 5.5.24
请问我做错了什么?
答案 0 :(得分:0)
我唯一可以看到的是你用单引号表示年份,但我没有在this demo中复制错误。
您还可以使用子查询和JOIN编写查询:
select m.first_name,
m.last_name,
c.amount
from members m
inner join
(
select sum(amount) Amount, memberid
from contributions
where year = 2013
group by memberid
) c
on m.memberid = c.memberid
请参阅Demo
如果您没有将year
存储在单独的列中并且您有一个日期时间列,那么您将需要使用year()
函数:
select m.first_name,
m.last_name,
c.amount
from members m
inner join
(
select sum(amount) Amount, memberid
from contributions
where year(yourDate) = 2013
group by memberid
) c
on m.memberid = c.memberid
答案 1 :(得分:0)
或者用这种方式改变代码:
SELECT First_name,
last_name,
(SELECT SUM(amount)
FROM contributions
WHERE contributions.memberid = members.memberid
AND contributions.year = '2013') AS amount
FROM members
我只更改此行,
AND contributions.year = '2013'
因为您的查询中可能存在歧视(存在于两个表中)
Saludos)