如何在查询中有LIMIT时获得总结果数?

时间:2015-11-24 09:31:48

标签: mysql sql

我有这样的查询:

select * from table where id <= 10 limit 5;  // table has +10 rows

上述查询^的结果数为10行。现在我想知道,如何获得此查询中的总结果数:

select * from table where col = 'anything' limit 5;

如何计算所有结果的数量(无论limit在这个^?

其实我想要这个号码:

select count(*) as total_number from table where col = 'anything'

现在我想知道如何在没有其他查询的情况下获得总结果数。

3 个答案:

答案 0 :(得分:9)

添加一列total,例如:

select t.*
     , (select count(*) from tbl where col = t.col) as total
from tbl t
where t.col = 'anything'
limit 5

@Tim Biegeleisen 所述: limit关键字在其他所有内容后应用,因此count(*)仍然会返回正确答案。 < / p>

答案 1 :(得分:8)

您需要在查询和FOUND_ROWS()函数中使用SQL_CALC_FOUND_ROWS选项来执行此操作:

DECLARE @rows int
SELECT SQL_CALC_FOUND_ROWS * from table where col = 'anything' limit 5;

SET @rows = FOUND_ROWS(); --for a later use

答案 2 :(得分:1)

使用子查询

select *, (select count(*) from table where col = 'anything') as total 
from table where col = 'anything' limit 5;