Справка, подсчитывающая общее количество строк

У меня есть следующий тип запроса:

SELECT * FROM TABLE GROUP BY Table.Table_ID LIMIT 10 

Я хочу знать, сколько строк будет выбрано, если этого LIMIT 10 не было. Я не могу просто выбрать COUNT(Table_ID) потому что я группирую это, поэтому он будет давать по 1 в каждой строке.

Четко описан в руководстве :

SQL_CALC_FOUND_ROWS сообщает MySQL, чтобы рассчитать, сколько строк будет в наборе результатов, не LIMIT какого-либо предложения LIMIT . Затем количество строк можно получить с помощью SELECT FOUND_ROWS() . См. Раздел 11.13 «Информационные функции».

Если вы перейдете по ссылке в раздел 11.13, появится пример:

FOUND_ROWS()

Оператор SELECT может включать предложение LIMIT , чтобы ограничить количество строк, которые сервер возвращает клиенту. В некоторых случаях желательно знать, сколько строк оператор должен был бы вернуть без LIMIT , но без повторного запуска оператора. Чтобы получить этот счетчик строк, SQL_CALC_FOUND_ROWS опцию SQL_CALC_FOUND_ROWS в SELECT и затем вызовите FOUND_ROWS() :

 mysql> SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name -> WHERE id > 100 LIMIT 10; mysql> SELECT FOUND_ROWS(); 

Второй SELECT возвращает число, указывающее, сколько строк будет возвращено первым SELECT если бы оно было написано без предложения LIMIT .

В отсутствие опции SQL_CALC_FOUND_ROWS в последнем успешном операторе SELECT FOUND_ROWS() возвращает количество строк в результирующем наборе, возвращаемом этим оператором. Если оператор включает предложение LIMIT , FOUND_ROWS() возвращает количество строк до предела. Например, FOUND_ROWS() возвращает 10 или 60 , соответственно, если оператор включает LIMIT 10 или LIMIT 50, 10 .

Пожалуйста, используйте документацию в качестве своего первого порта захода.

 SELECT COUNT(DISTINCT TABLE_ID) FROM TABLE 

Вы можете вызвать функцию mysql_num_rows в результирующем наборе, содержащем все найденные строки.

 $result = mysql_query('SELECT * FROM TABLE GROUP BY Table.Table_ID'); $row_count = mysql_num_rows($result);