我有这样的查询:
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'
现在我想知道如何在没有其他查询的情况下获得总结果数。
答案 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;