2016-09-09 73 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