Mysql不在另一个表中时的总和为0

Mysql不在另一个表中时的总和为0,mysql,sum,Mysql,Sum,我有两张桌子: users: id | name | club_id | 1 Bob 4 2 Jane 5 3 Alex 4 4 Paul 4 5 Tom 4 points: user_id | club_id | amount(can vary) 1 4 10 1

我有两张桌子:

users:
id   |  name   |  club_id |
1       Bob         4
2       Jane        5
3       Alex        4 
4       Paul        4
5       Tom         4

points:
user_id    |   club_id    |   amount(can vary)
1                 4             10
1                 2             10
2                 5             10
3                 4             10
3                 4             10
4                 4             10
3                 2             10
3                 4             10

I need (where users.club_id = 4 AND points.club_id = 4):
user_id    |    name    |   sum(amount)
3             Alex           30
1             Bob            10
4             Paul           10
5             Tom             0      
请注意,Tom在users中存在,但在points中没有任何条目,因此他的总和应为0。这就是我从用户那里抓取列表的原因

我也希望这能尽可能地提高效率(因此我在用户和积分方面都添加了club_id=4)

试试这个:

SELECT
  u.id,
  u.name,
  COALESCE(SUM(p.amount), 0) AS Totalpoints
FROM
(
  SELECT * 
  FROM users
  WHERE club_id = 4
) AS u
LEFT JOIN
(
  SELECT * 
  FROM points
  WHERE club_id = 4
) AS p ON p.user_id = u.id 
GROUP BY u.id, 
         u.name;
请在此处查看它的实际操作:

试试这个:

SELECT
  u.id,
  u.name,
  COALESCE(SUM(p.amount), 0) AS Totalpoints
FROM
(
  SELECT * 
  FROM users
  WHERE club_id = 4
) AS u
LEFT JOIN
(
  SELECT * 
  FROM points
  WHERE club_id = 4
) AS p ON p.user_id = u.id 
GROUP BY u.id, 
         u.name;
请在此处查看它的实际操作:

尝试此查询

select u.id, u.name, sum(if (p.amount is null, 0, p.amount)) as totalPoint
from 
user u 
left join 
(select * from point p where p.club_id = 4)p
on u.id = p.user_id
where u.club_id=4 
group by u.id
:试试这个查询

select u.id, u.name, sum(if (p.amount is null, 0, p.amount)) as totalPoint
from 
user u 
left join 
(select * from point p where p.club_id = 4)p
on u.id = p.user_id
where u.club_id=4 
group by u.id

:用户
1 | Bob
的总分应该是10分而不是20分,因为他在
积分表中只有一项
俱乐部id
=4分,那么总分应该是10分。我想这也行得通(没有尝试过)谢谢您的回答!用户
1 | Bob
的总分应该是10分而不是20分,因为他在
积分表中只有一个条目
俱乐部id
=4分,那么总分应该是10分。我想这也行得通(没有尝试过)谢谢您的回答!