如何获得已返回的行数?

如何获得已返回的行数?

问题描述:

在下面的查询:如何获得已返回的行数?

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; 
+0

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

+0

啊,这看起来像我必须做的。 – 2010-07-16 17:21:55

SELECT COUNT(*) FROM table1; 
+0

这是我上面的查询的一部分,还是单独的查询?我知道如何做到这一点......我希望有一种方法将其应用到我现有的查询中。 – 2010-07-16 17:12:09

+0

@George Edison:单独查询 - 标准SQL要求您为SELECT子句中不使用聚合函数(COUNT,MIN,MAX等)的列定义GROUP BY子句,这会影响结果集。 – 2010-07-16 17:14:51

+0

反正什么样子? – 2010-07-16 17:16:15