我有两张桌子。问题和问题投票。问题表中有许多行,而投票表中只有一行。
我有这样的疑问:

select
   problems.problem_id,
   creator_member_id,
   problem_title,
   problem_description,
   sum( vote ) as totalVotes,
   problem_date
from problems
left join problem_votes on
problems.problem_id = problem_votes.problem_id

我原以为会有一个问题列表返回,但由于某种原因,我只得到一个项目。
如果我去掉sum函数,它将返回20行。有没有办法让查询得到每个问题的投票总数?

最佳答案

您需要一个GROUP BY否则它将聚合整个表,而不是为每个问题返回一行:

SELECT
    problems.problem_id,
    creator_member_id,
    problem_title,
    problem_description,
    sum(vote) as totalVotes,
    problem_date
FROM problems
LEFT JOIN problem_votes
    ON problems.problem_id = problem_votes.problem_id
GROUP BY problems.problem_id

此查询使用MySQL扩展:GROUP BY and HAVING with Hidden Columns

10-08 02:21