0

我试图让我的 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

请问我做错了什么?

4

2 回答 2

0

我唯一能看到的是你有单引号中的年份,但我没有重现这个演示中的错误。

您还可以使用子查询和 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

演示

如果您没有存储year在单独的列中并且您有一个 datetime 列,那么您将需要使用该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
于 2013-03-31T21:51:05.740 回答
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'

因为可能在您的查询中存在歧义(两个表中都存在)

萨卢多斯)

于 2013-03-31T22:28:04.460 回答