在mysql中不使用count()查找行数

时间:2011-02-14 10:42:11

标签: mysql stored-procedures

任何人都可以帮我找到计算运行查询时找到的行数的方法。我想在存储过程中运行此查询,具体取决于我想要执行某些操作的计数。 我试图将变量值设置为。

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

以上查询完全错误。但是在这里我想要计算或设置一些标志,发现记录小于或等于限制设置为查询,即此处。通过执行此操作,我将保存一个查询以计算查询提取的行。

我尝试过使用SQL_CALC_FOUND_ROWS和Found_rows()但是如果查询没有限制运行,它会给我总行数。

2 个答案:

答案 0 :(得分:3)

解决方案:

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 :(得分:1)

将您的查询替换为类似的

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..)

因此:您的原始查询但没有限制条款,在parens之间。