найти количество строк без использования count () в MySQL - PullRequest
0 голосов
/ 14 февраля 2011

Может кто-нибудь помочь мне найти способ подсчитать количество строк, найденных во время выполнения запроса. Я хочу выполнить этот запрос в хранимой процедуре в зависимости от количества, которое я хочу выполнить определенные действия. Я пытался установить значение переменной что-то вроде.

 Select abc_master_id,
        abc_name,
        abc_parent_id,
       (@row := @row +1)  rownum 
 from abc_master 
 where blah..  blah.. limit 18,9

Вышеуказанный запрос совершенно неверен. Но здесь я хочу подсчитать или установить какой-либо флаг, чтобы найденные записи были меньше или равны пределу, установленному для запроса, т.е. здесь 9. Делая это, я сохраню один запрос для подсчета строк, извлеченных по запросу.

Я пытался использовать SQL_CALC_FOUND_ROWS и Found_rows (), но он дает мне общее количество строк, если запрос выполняется без ограничений.

Ответы [ 2 ]

3 голосов
/ 14 февраля 2011

Решение:

SELECT abc_master_id, 
       abc_name,
       abc_parent_id,
       @i:=@i+1 AS rownum 
FROM abc_master ,(SELECT @i:=0) foo
where blah.. blah.. limit 18,9
1 голос
/ 14 февраля 2011

Замените ваш запрос аналогичным

Select count(*)
from abc_master where blah.. blah..

и получите первую строку.

Mysql улучшился за последние годы, но я не знаю, поддерживает ли ваш движок гораздо более простойподзапрос:

select count(*) from (
Select abc_master_id, abc_name, abc_parent_id ... from abc_master
where blah.. blah..)

Таким образом: ваш исходный запрос, но без предложения limit, между паренами.

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