mysql/mariadb-左连接聚合未返回所有值

mysql/mariadb-左连接聚合未返回所有值,mysql,join,mariadb,Mysql,Join,Mariadb,首先,我不知道这个问题怎么用词,所以如果有更好的术语或措辞,请随意编辑 这是我的模式: 我得到的结果是 map_id score 3 0 1 1 2 1 然而,这是不完整的。我也期望id4和5,得分也为0。我不确定它为什么在第一次0之后停止。我缺少什么?在视图中,您可以使用以下选项: SELECT a.id, sum(IF(b.score IS NULL,0,b.score)) as `score` FROM map a LEFT JOIN vote_map b ON

首先,我不知道这个问题怎么用词,所以如果有更好的术语或措辞,请随意编辑


这是我的模式:

我得到的结果是

map_id  score
3   0
1   1
2   1

然而,这是不完整的。我也期望id
4
5
,得分也为
0
。我不确定它为什么在第一次
0
之后停止。我缺少什么?

在视图中,您可以使用以下选项:

SELECT 
  a.id,
  sum(IF(b.score IS NULL,0,b.score)) as `score`
FROM map a
LEFT JOIN vote_map b
ON a.id = b.map_id
GROUP BY a.id

更简单的是,在您的SQL FIDLE中,它似乎返回了正确的结果

,因为我的
分数
是一个枚举,这不起作用。将需要编辑到
CAST(CAST(b.得分为char)作为签名)
。否则似乎有效。很高兴它对你有效。查看您的查询后,我认为问题在于您正在进行右连接,而不是左连接。我的
右连接
与您的
左连接
相等,因为我们的表顺序是交换的。不相等--GROUP BY正在命中不同的列。
SELECT 
  a.id,
  sum(IF(b.score IS NULL,0,b.score)) as `score`
FROM map a
LEFT JOIN vote_map b
ON a.id = b.map_id
GROUP BY a.id