如何在MySQL中计算选定行数?

3

这是我的查询:

SELECT 
    a.*
FROM
    qanda q
        JOIN
    qanda a ON q.Id = a.related
WHERE
    a.type = 1
AND a.author_id = 29
AND q.amount IS NULL;

现在,实际上它选择了3行。好的,我希望它返回3而不是a.*。其实,我不需要这些列的任何值,我只需要计算所选行的数量。我该怎么做?

注意: 我可以使用当前的查询,然后通过PHP计算行数。但我不喜欢那种方法。


1
下面的答案可能是您最好的解决方案。您的驱动程序也应该具有此功能,http://php.net/manual/en/pdostatement.rowcount.php,http://php.net/manual/en/mysqli-result.num-rows.php。 - chris85
@chris85 即使驱动程序支持它,你仍然需要编写 MySQL 查询并计算行数。 - grepsedawk
@Pachonk...是的,这就是为什么评论前面加上了“下面的答案可能是您最好的解决方案”的原因。 - chris85
完全理解,我只是想澄清一下,即使它的选项可用,它也会更低效。我不是故意表现得刻薄。 - grepsedawk
1个回答

6
简单。在MySQL中使用COUNT()函数。
SELECT 
    COUNT(a.id) as count
FROM
    qanda q
        JOIN
    qanda a ON q.Id = a.related
WHERE
    a.type = 1
AND a.author_id = 29
AND q.amount IS NULL;

只有一件事,为什么不用COUNT(1)而是用COUNT(a.id) - Martin AJ
1
没有理由。仅出于个人喜好。 - grepsedawk
1
请参考https://dev59.com/gW435IYBdhLWcg3w1z4t了解更多详情。 - grepsedawk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接