使用MySQL子查询获取个人总数

时间:2013-03-31 21:47:07

标签: mysql

我正在尝试让我的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

请问我做错了什么?

2 个答案:

答案 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)