Подтвердить что ты не робот

Найти общее количество результатов в mySQL-запросе со смещением + предел

Я использую функцию разбиения на страницы с помощью Codeigniter, но я думаю, что это относится к кодированию PHP/mySQL в целом.

Я извлекаю списки каталогов, используя смещение и ограничение, в зависимости от того, сколько результатов я хочу на странице. Однако, чтобы узнать общее количество требуемых страниц, мне нужно знать (общее количество результатов)/(ограничение). Сейчас я собираюсь запустить SQL-запрос во второй раз, а затем подсчитать количество требуемых строк, но без использования LIMIT. Но я думаю, что это кажется пустой тратой вычислительных ресурсов.

Есть ли лучшие способы? Спасибо!

EDIT: Мой SQL-запрос также использует WHERE, чтобы выбрать все строки с определенным "category_id"

4b9b3361

Ответ 2

SELECT COUNT(*) FROM table_name WHERE column = 'value' будет возвращать общее количество записей в таблице, соответствующие этому условию очень быстро.

Операции с базой данных SELECT обычно "дешевы" (с точки зрения ресурсов), поэтому не чувствуйте себя слишком плохо, чтобы использовать их разумным образом.

EDIT: добавлено WHERE после того, как OP упомянул, что им нужна эта функция.

Ответ 3

Учитывая, что SQL_CALC_FOUND_ROWS требует вызова FOUND_ROWS() после этого, если вы хотите получить общее количество с помощью результаты возвращаются из вашего лимита без необходимости ссылаться на второй SELECT, я бы использовал JOIN результаты, полученные из подзапрос:

SELECT * FROM `table` JOIN (SELECT COUNT(*) FROM `table` WHERE `category_id` = 9) t2 WHERE `category_id` = 9 LIMIT 50

Примечание. Каждая производная таблица должна иметь свой собственный псевдоним, поэтому обязательно укажите объединенную таблицу. В моем примере я использовал t2.

Ответ 4

SELECT COUNT(id) FROM `table` WHERE `category_id` = 9

Дает вам количество строк для вашей конкретной категории.