我有两个表:玩家(id,名称)和目标(id,player_id)。我想返回所有玩家的列表以及他们与之关联的目标数量,即使他们没有与之相关的目标。我试过了:
SELECT player.name AS player_name,
COUNT(goal.id) AS goals
FROM player
LEFT JOIN goal
ON player.id = goal.player_id
GROUP BY player
ORDER BY goals DESC;
但问题在于它只返回一个没有进球的球员,我无法弄清楚原因。我知道它与GROUP BY子句有关。肯定有很多球员没有进球。
答案 0 :(得分:3)
您按整个表进行分组,而不是播放器表中唯一的单个字段(例如player.name
)。
答案 1 :(得分:3)
您需要按player.name
分组。我很惊讶你没有收到player
不是定义列的错误。