2016-09-09 52 views
1

这里是我的查询:如何计算MySQL中选定的行?

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.*。实际上我不需要这些列的任何valye,我只需要计算所选行的数量。我怎样才能做到这一点?

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

+1

下面的答案可能是您的最佳解决方案。你的驱动也应该有这个功能,http://php.net/manual/en/pdostatement.rowcount.php,http://php.net/manual/en/mysqli-result.num-rows.php – chris85

+0

@ chris85即使驱动程序支持它,您仍然需要MySQL查询并计算行数。 – Pachonk

+0

@Pachonk ...是的,这就是为什么评论前面加了'下面的答案可能是你最好的解决方案。' – chris85

回答

4

简单。在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; 
+0

只有一件事,为什么不用'COUNT(1)'而不是'COUNT(a.id)'? –

+1

没理由。个人喜好。 – Pachonk

+1

有关更多详细信息,请参阅http://stackoverflow.com/questions/5179969/what-is-better-in-mysql-count-or-count1。 – Pachonk