2012-03-13 26 views
0

讓我說我的檢索數據的列表...查詢未來30個記錄字母順序

首先

$Query = mysql_query("SELECT * FROM data ORDER BY name ASC LIMIT 0,30"); 

從那裏我使用AJAX/jQuery來附加額外的30條記錄。我需要調用另一個文件,其中查詢將從我離開的位置繼續。

$Query = mysql_query("SELECT * FROM data WHERE name < '".mysql_real_escape_string($_GET['lastRecord'])."' ORDER BY name ASC LIMIT 0,30"); 

我的問題是,如果我有第一查詢順序前30的名字,我怎麼能寫第二查詢拿起我的順序不放過?

回答

2

更改LIMIY這樣的 - LIMIT 30,30

順便說一句,你這個標記作爲jQuery和事實並非如此。

0

您不需要爲查詢添加WHERE子句,只需使用LIMIT來分割所需的結果塊。限制用於將MySQL查詢結果限制在指定範圍內的查詢結果。您可以使用它顯示第一個X數量的結果,或顯示X - Y結果的範圍。語法是Limit X, Y,其中X是起點,Y是要檢索的記錄數。

例如:

$Query = mysql_query("SELECT * FROM data ORDER BY name ASC LIMIT 90,30"); 

將檢索30條記錄與第91屆開始(記錄是零索引)。

+0

好的非常感謝! – Joe 2012-03-13 21:14:15

0

LIMIT子句中的第一個數字是偏移量,從0開始所以,你的第一個查詢是正確LIMIT 0, 30拿到第30

簡單地增加30的偏移量,記錄31開始,所以得到30更多做LIMIT 30, 30

對於第三個頁面,這將是LIMIT 60, 30

如果你需要一個page x of n型顯示器,發出COUNT(*)第一個獲得行的總數,但明白,實際的行和列數可能更改是否在調用之間插入或刪除行。

1

這個選項適用於短表,但是在長表中這會給性能帶來不好的影響。
你執行的每一個查詢(如那樣)都會用filesort進行全表掃描,這需要一些時間。

我認爲你需要讀取一次表,並將結果放入一個臨時表(已排序),其中有一些index列,然後使用WHERE index BETWEEN $number AND ($number+30)

+0

是的這個例子適用於較小的表格。好建議。我會牢記這一點以備將來參考。謝謝 – Joe 2012-03-13 21:43:15