Почему MySQL возвращает один ряд? - PullRequest
2 голосов
/ 16 августа 2011

Когда я использую функцию count (), MySQL возвращает одну строку.Мне нужно использовать функцию подсчета для системы нумерации страниц, у меня нет лучшей идеи.Мой SQL:

SELECT *, count(id_question) AS num FROM `questions` LIMIT 0, 10

Ответы [ 7 ]

3 голосов
/ 16 августа 2011

при использовании любой агрегатной функции , без условия group by вы видите только один результат.

1 голос
/ 16 августа 2011

COUNT () является агрегатной функцией и поэтому сгруппирует все строки вместе.Если вам нужно количество всех строк, просто посчитайте количество строк, возвращаемых на любом языке, который вы используете.

0 голосов
/ 16 августа 2011

Попробуйте:

SELECT * FROM `questions` a
INNER JOIN (
  SELECT count(`id_question`) as `num`
  FROM `questions`
) b
LIMIT 0, 10;

Каждая строка теперь будет иметь общее количество строк таблицы в виде столбца с именем num.

0 голосов
/ 16 августа 2011

Вы можете использовать mysql_num_rows($queryHandle) для обычного запроса результатов. Пример:

$query = 'SELECT * FROM `questions` LIMIT 0, 10';
$queryHandle = mysql_query($query);
$count = mysql_num_rows($queryHandle);
$firstRow = mysql_fetch_assoc($queryHandle);
0 голосов
/ 16 августа 2011

Поскольку count является агрегатной функцией, она по замыслу возвращает только одну строку У вас было бы два использовать два запроса, один для выбора и один для подсчета. В качестве альтернативы вы можете сделать вложенный выбор:

SELECT *, (SELECT count(id_question) from 'questions') AS num FROM `questions` LIMIT 0, 10
0 голосов
/ 16 августа 2011

Вы пробовали ...

SELECT *, count(*) AS num FROM `questions` LIMIT 0, 10

или просто использовали mysql_num_rows (), чтобы получить счет?

0 голосов
/ 16 августа 2011

SQL не позволяет агрегировать по всей таблице и возвращать все строки одновременно.

Вы должны использовать два запроса, один для общего числа строк (количество) и один для самих строк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...