mysql中的count(*)只返回一条记录

时间:2012-04-04 14:48:51

标签: mysql doctrine

我想计算同一个select语句中另一个表的记录数,我使用了Left join 在select语句中我输入 count(ag。*) 看到了 示例:

$q = Doctrine_Query::create()
            ->select("a.answer_id,a.date_added , count(ag.content_id) AS agree_count")
            ->from('Answer a')
             ->leftJoin("a.Agree ag ON a.answer_id = ag.content_id AND ag.content_type = 'answer' ")
            ->where('a.question_id= ? ', $questionId)

但它只返回第一张唱片,我可以修复吗?或制作另一张桌子并将其仅用于计数?

3 个答案:

答案 0 :(得分:5)

您的查询中缺少GROUP BY

更多信息here.

当你没有GROUP BY子句时,只获得一行是正常的。

答案 1 :(得分:0)

如果您不使用分组依据,则计数(*)将仅返回一条记录。您要求它计算所有记录,因此只能有一个结果。

答案 2 :(得分:0)

count()SQL函数更改从数据库返回结果的方式 - 如果没有GROUP BY,数据库将只返回一条记录,而不管SELECT中的其他列。

如果你添加:

group by a.answer_id

到SQL查询的末尾,可能是DWYM。