2010-07-16 87 views
1

在下面的查詢:如何獲得已返回的行數?

SELECT column1,column2 FROM table1 ORDER BY column1 LIMIT 0,30 

我如何才能找到,將被退回已行數,如果不是爲LIMIT

編輯:我正在尋找一種方法來處理這個到上面的查詢,而不是做一個單獨的查詢。 (如果可能的話)。

回答

0

如果你這樣做查詢:

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

3
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