按字母顺序查询下30条记录

时间:2012-03-13 20:58:40

标签: mysql

假设我检索了我的数据列表......

第一

$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名称,我怎么能写第二个查询来提取我按顺序中断的地方?

4 个答案:

答案 0 :(得分:2)

像这样更改LIMIT - LIMIT 30,30

BTW,你把它标记为jQuery而不是。

答案 1 :(得分:1)

此选项适用于短表,但在长表中,这会导致性能不佳 您执行的每个查询(如此)将使用filesort执行全表扫描,这需要一些时间。

我认为你需要阅读一次表,并将结果放在一个临时表(已经排序)中,并使用index列,然后使用WHERE index BETWEEN $number AND ($number+30)

答案 2 :(得分: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");

将从91st开始检索30条记录(记录为零索引)。

答案 3 :(得分:0)

LIMIT子句中的第一个数字是偏移量,从0开始。因此,您的第一个查询正确LIMIT 0, 30以获得前30个。

只需将偏移量增加30即可从记录31开始,所以再多做30次LIMIT 30, 30

对于第三页,它将是LIMIT 60, 30等。

如果您需要page x of n类型显示,请先发出COUNT(*)以获取总行数,但要了解如果在两者之间插入或删除行,实际的行数和行数可能会发生变化调用