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