2013-01-06 58 views
0

如何在mysql中使用查詢實現自定義分頁?根據我需要從數據庫獲取記錄的頁碼,有可能嗎?對此有所瞭解會有所幫助。在SQL端查詢分頁

謝謝。

回答

1
SELECT * FROM items LIMIT 0,10 

要顯示分頁,你還需要知道總行,以計算頁面鏈接的數量,顯示一個類似:

頁:1 2 3 4 5 6 ...。

對MySQL進行查詢來計算像「SELECT COUNT(*)...」這樣的行數是不可取的,因此您首先會失去使用「LIMIT」查詢保存的一些性能。有這樣做的更有效的方式,你只需要修改原來的查詢只是一點點,如:

$result = mysql_query('SELECT SQL_CALC_FOUND_ROWS * FROM items LIMIT 0,10'); 

緊接着是第一次查詢後運行:

$countData = mysql_fetch_assoc(mysql_query('SELECT found_rows() AS total')); 
$totRows = $countData['total']; 
+0

如果我沒有排序我的結果,那麼它是否保持秩序?如果我通過限制0,10和下次限制10,20,是否正確顯示下一個10行還是需要隨機行? – user1869132

+0

如果你通過限制10,20那麼它從10到20填補記錄 – Prashant16

+0

thnaks爲答案。 – user1869132

1

通過PHP你需要:

$每頁 - 意味着你要多少行dispaly。
$ Pageoffset - 手段(CurrentPageNo *每頁)

 $query =" select * from table limit $Pageoffset, $PageSize'; 
    // limit restricts the no. of rows fetching. 

喜歡聰明人,你可以在MySQL做。

+0

如果我沒有排序我的結果,那麼它是否保持秩序?如果我通過限制0,10和下一個時間限制10,20,它是否正確顯示下10行或它採取隨機行? – user1869132

+0

它將保持順序,因爲它已被顯示在表格中。 – sourcecode

+0

感謝您的回答 – user1869132

1

例如,

SELECT * FROM `your_table` LIMIT 0, 10 

將顯示10個記錄從第一記錄開始。

+0

如果我不排序我的結果,那麼它是否保持秩序?如果我通過限制0,10和下次限制10,20,它正確顯示下10行或它採取隨機行? – user1869132

+0

它應該是'0,10','10,10','30,10'......如果你想每頁獲得10行。而且它不需要隨機的行。 –

+0

感謝您的回答 – user1869132