[英]Query next 30 records by alphabetical order
假設我檢索了我的數據列表...
第一
$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個,我該如何寫第二個查詢以按該順序停下來?
像這樣更改LIMIY-LIMIT 30,30
順便說一句,您將其標記為jQuery,但事實並非如此。
此選項對短表很有用,但是在長表中這會降低性能。
您執行的每個查詢(這樣的查詢)都將使用文件filesort
進行全表掃描,這需要一些時間。
我認為您需要讀取一次表,並將結果放入帶有某些index
列的臨時表(已排序)中,然后使用WHERE index BETWEEN $number AND ($number+30)
。
您無需在查詢中添加WHERE子句,只需使用LIMIT即可切出所需的結果塊。 Limit用於將您的MySQL查詢結果限制為指定范圍內的結果。 您可以使用它顯示前X個結果數,或顯示X-Y個結果的范圍。 語法為Limit X, Y
,其中X是起點,Y是要檢索的記錄數。
例如:
$Query = mysql_query("SELECT * FROM data ORDER BY name ASC LIMIT 90,30");
將從第91個開始檢索30條記錄(記錄的索引為零)。
LIMIT子句中的第一個數字是偏移量,從0開始。因此,您的第一個查詢正確地是LIMIT 0, 30
以得到前30個。
只需將偏移量增加30
即可從記錄31
開始,因此LIMIT 30, 30
獲得30,則執行LIMIT 30, 30
。
對於第三頁,它將為LIMIT 60, 30
等。
如果需要顯示page x of n
類型的page x of n
,請首先發出COUNT(*)
以獲取總行數,但是請理解,如果在兩次調用之間插入或刪除行,則實際行數和行數可能會發生變化。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.