当不在另一个表中时,Mysql SUM 0

标签 mysql sum

我有 2 个表:

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 出现在用户中,但在点中没有任何条目,因此他的总和应该为 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;

在此处查看实际效果:

关于当不在另一个表中时,Mysql SUM 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16667648/

相关文章:

java - 检查 o(n) 中数组左侧的总和是否等于数组右侧的总和

mysql - 使用 SQL 取消注册某个类别中的 Moodle 用户

mysql - 在 windows7 的 yii2 中安装 mongodb 失败

mysql - SQL请求以查找是否完全覆盖了一个时间段

具有不同where子句的表总和的MySQL总和

MySQL Statement (Group and SUM() => getting multiple "sum"result per line

mysql - 如何把这个mysql select 改成sql server select 语句?

mysql - Rails、MySQL 和雪豹

mysql - 神秘的 SQL 变量

MySQL 如何在求和中使用减法