2016-09-09 2 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.*. На самом деле мне не нужна ни одна из этих столбцов, мне просто нужно подсчитать количество выбранных строк. Как я могу это сделать?

Примечание: Я могу использовать свой текущий запрос, а затем подсчитать количество строк 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

Простой. Использовать COUNT() в MySQL

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

Смежные вопросы