Получить количество строк в select ... group по выражению mysql - PullRequest
0 голосов
/ 24 июня 2010

У меня есть таблица товаров, в которой содержится около 2000 товаров для одежды, у каждого товара есть поле grpIdent и поле productGroup.

, когда я запускаю следующий запрос:

select count(1) 
from tblclothingitems ci 
where productGroup='hel' 
group by productGroup, grpIdent

Я получаю результирующий набор из 99 строк, согласно SQL Yog, содержащий различные значения, относящиеся к количеству строк для каждой группы.НО я хочу вернуть число 99 с указанием количества возвращаемых строк.

У кого-нибудь есть идеи, как мне этого добиться, пожалуйста?

Ответы [ 5 ]

2 голосов
/ 23 мая 2012
select **@@Rowcount** as myResultRowsCount
from tblclothingitems ci 
where productGroup='hel' 
group by productGroup, grpIdent
2 голосов
/ 24 июня 2010
SELECT COUNT(*) FROM ([Your Query])

Вернет количество строк из вашего запроса.

0 голосов
/ 15 февраля 2014
select productGroup, grpIdent, count(*) 
from tblclothingitems ci 
where productGroup='hel' 
group by productGroup, grpIdent;

вернет счетчики для различных значений grpIdent.

Точка 1. Вы можете вложить таблицу и выбрать count (*) для подсчета строк.

Точка 2. Этониже приведен предпочтительный запрос для количества значений.

select count (distinct grpIdent) 
from tblclothingitems ci 
where productGroup='hel'; 
0 голосов
/ 24 июня 2010

Используйте встроенную функцию MySQL «SQL_CALC_FOUND_ROWS», которая работает следующим образом, используя приведенный выше пример запроса;

select SQL_CALC_FOUND_ROWS count(1) 
from tblclothingitems ci 
where productGroup='hel' 
group by productGroup, grpIdent

Затем введите вторую команду MySQL;

SELECT FOUND_ROWS();

Ииспользуйте этот результат в своем программном обеспечении - вы можете использовать его во многих областях, например, при обновлении данных, или там, где вы используете предложение «LIMIT», чтобы ограничить количество строк, возвращаемых вашему приложению.

SQL_CALC_FOUND_ROWS сообщаетMySQL для вычисления количества строк игнорируя предложение "LIMIT", которое позволяет вам сделать что-то вроде.

SELECT SQL_CALC_FOUND_ROWS * 
FROM `myTable` 
WHERE `title` LIKE "%blah%" 
LIMIT 100,10;

Извлечь 10 строк, начиная с 100-й строки, а затем;

SELECT FOUND_ROWS();

Что скажет вам, сколько строк в строке title во всей таблице содержит «blah», вы можете представить эту информацию как «Отображение 10 строк из 12345 всего» * ​​1018*

0 голосов
/ 24 июня 2010

Если вам нужно одно значение, вы должны выбрать переменную.
Например:

DECLARE @Count INT;
select @Count = count(1) from tblclothingitems ci where productGroup='hel' group by productGroup, grpIdent
RETURN @Count

РЕДАКТИРОВАТЬ:
Кажется, я неправильно понял ваш вопрос,Если я понимаю это прямо сейчас, вы можете использовать: SELECT COUNT (DISTINCT productgroup) ОТ tblclothingitems

...