У меня есть следующий тип запроса:
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в последнем успешном операторе SELECTFOUND_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);