【问题标题】:find number of rows without using count() in mysql在mysql中不使用count()查找行数
【发布时间】:2011-06-26 20:17:52
【问题描述】:

任何人都可以帮助我找到计算运行查询时找到的行数的方法。我想根据我要执行某些操作的计数在存储过程中运行此查询。 我试图设置类似的变量值。

 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(),但如果查询无限制运行,它会为我提供总行数。

【问题讨论】:

    标签: mysql stored-procedures


    【解决方案1】:

    解决办法:

    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
    

    【讨论】:

      【解决方案2】:

      用类似的查询替换您的查询

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

      因此:您的原始查询,但没有限制子句,在括号之间。

      【讨论】:

        猜你喜欢
        • 2023-01-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-01
        • 1970-01-01
        相关资源
        最近更新 更多