2013-08-22 6 views
0

Я пытаюсь получить записи на основе применяемых критериев поиска. В то время я выбираю только 50 строк (для разбивки на страницы таблицы, используемые на веб-странице). Но я также нуждаюсь в количестве строк, удовлетворяющих критериям поиска (для отображения 1-50 out of <total> records & и так далее).MySql подсчет группы по результату

Следующий запрос дает мне группу записей по идентификатору пользователя.

select * from user 
group by userid 
where name like '%hhh%' 
limit 50 offset 0 

Здесь я получу первые 50 записей, который удовлетворяет критерии, но Итоговые результаты поиска могут быть больше 50. Мне нужно это общее количество вместе с другими результатом запроса.

+1

Для чего нужна группа? Я думаю, что userid является основным ключом, поэтому он должен быть уникальным ... – Sarajog

ответ

2

Я хотел бы использовать отдельный запрос:

select count(*) from user 
group by userid 
where name like '%hhh%' 

Ваш запрос будет намного быстрее и может запускаться каждый раз, когда выбраны еще 50 строк, то вы можете запустить этот запрос уже работает один раз, чтобы получить общая

0

попробовать этот запрос ..

select count(*) as total,userid from users 
where name like '%hhh%' 
group by userid limit 50 offset 0 
0

MySQL поддерживает это с опцией SQL_CALC_FOUND_ROWS. Что-то вроде следующего: (адаптировано (но не проверено!) Из документов):

mysql> SELECT SQL_CALC_FOUND_ROWS * FROM user 
-> WHERE name like '%hhh%' LIMIT 50; 
mysql> SELECT FOUND_ROWS(); 
Смежные вопросы