簡體   English   中英

按字母順序查詢下30條記錄

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM