如何获得已返回的行数?
在下面的查询:如何获得已返回的行数?
SELECT column1,column2 FROM table1 ORDER BY column1 LIMIT 0,30
我如何才能找到,将被退回已行数,如果不是为LIMIT
?
编辑:我正在寻找一种方法来处理这个到上面的查询,而不是做一个单独的查询。 (如果可能的话)。
如果你这样做查询:
SELECT SQL_CALC_FOUND_ROWS column1,column2 FROM table1 ORDER BY column1 LIMIT 0,30;
可以检索的行数之前的选择具有
select FOUND_ROWS();
发现如果你真的必须这样做有一个查询,你将不得不使用一个子选择(这将有一个额外的列添加到每一行的弱点..)
SELECT column1,column2,s.total FROM table1,
(select count(*) as total from table1) s
ORDER BY column1 LIMIT 0,30;
SELECT COUNT(*) FROM table1;
这是我上面的查询的一部分,还是单独的查询?我知道如何做到这一点......我希望有一种方法将其应用到我现有的查询中。 – 2010-07-16 17:12:09
@George Edison:单独查询 - 标准SQL要求您为SELECT子句中不使用聚合函数(COUNT,MIN,MAX等)的列定义GROUP BY子句,这会影响结果集。 – 2010-07-16 17:14:51
反正什么样子? – 2010-07-16 17:16:15
http://www.mysqlperformanceblog.com/2007/08/28/to-sql_calc_found_rows-or-not-to-sql_calc_found_rows/ – 2010-07-16 17:21:45
啊,这看起来像我必须做的。 – 2010-07-16 17:21:55