在下面的查詢:如何獲得已返回的行數?
SELECT column1,column2 FROM table1 ORDER BY column1 LIMIT 0,30
我如何才能找到,將被退回已行數,如果不是爲LIMIT
?
編輯:我正在尋找一種方法來處理這個到上面的查詢,而不是做一個單獨的查詢。 (如果可能的話)。
在下面的查詢:如何獲得已返回的行數?
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