通过mysql语句获取select ...组的行数

时间:2010-06-24 14:51:57

标签: mysql select group-by rowcount

我有一个产品表,其中包含大约2000种服装产品,每种产品都有grpIdent字段和productGroup字段。

当我运行以下查询时:

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

根据SQL Yog,我得到了99行的结果集,其中包含与每个组的行数有关的不同值。但我想返回数字99,给出返回的行数。

是否有人知道如何实现这一目标?

5 个答案:

答案 0 :(得分:2)

SELECT COUNT(*) FROM ([Your Query])

将返回查询返回的行数。

答案 1 :(得分:2)

select **@@Rowcount** as myResultRowsCount
from tblclothingitems ci 
where productGroup='hel' 
group by productGroup, grpIdent

答案 2 :(得分:0)

如果您想要单个值,则必须选择变量 像这样:

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

修改
好像我错了你的问题。如果我现在理解,你可以使用:     SELECT COUNT(DISTINCT productgroup)FROM tblclothingitems

答案 3 :(得分:0)

使用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;

从第100行开始提取10行,然后;

SELECT FOUND_ROWS();

在整个表的title字段中,您会告诉您“blah”有多少行,然后您可以将此信息显示为“显示总共12345行中的10行”

答案 4 :(得分:0)

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';