mysql选择列表后的特定id

时间:2014-02-04 00:24:26

标签: php mysql sql

我正在尝试找到一个解决方案,以便从有序列表中选择某个ID之后的行列表。

例如,首先我选择1000行。然后,在后续请求中,我想从第一个请求的最后一个id之后获取另外1000行。我知道我可以使用limit来实现它,但是假设在第一个和第二个请求之间添加了100行,将有来自第一个请求的100行。

两个查询都将按条目的日期排序。

以下是我想到的查询示例:

$query = "SELECT * FROM table WHERE id AFTER $id ORDER BY date DESC";

4 个答案:

答案 0 :(得分:3)

$query = "SELECT * FROM `table` WHERE `id` > '$id' ORDER BY `date` DESC LIMIT 1000";

答案 1 :(得分:1)

两种方法:

WHERE

"SELECT * FROM `table` WHERE `id` > '$id' ORDER BY `date` DESC LIMIT $length"

LIMIT

"SELECT * FROM `table` LIMIT $start, $length"

答案 2 :(得分:1)

$ query =" SELECT * FROM table WHERE id> $ id ORDER BY date LIMIT 1000&#34 ;;

答案 3 :(得分:0)

你问的是逻辑,而不是代码,所以在这里。

第一个请求选择前1000个。

$query = "SELECT * FROM the_table ORDER BY `date` DESC LIMIT 0,1000";

NB日期是一个保​​留字,因此如果您调用了一个“日期”列,则不需要转义。

$rs=$db->selectMany($query); // replace this with however you select the rows. $rs is results set

使用PHP执行操作并保存最大ID。它们可能不合适。

$maxid=0;

foreach ($rs as $r){
    // whatever you need to do with your results
    $maxid=max($maxid, $r->id);
}

您的后续选择使用最后一个ID

$query = "SELECT * FROM the_table WHERE id > $maxid ORDER BY date DESC LIMIT 0,1000";

但是你需要注意你是按日期排序并使用id找到一个断点,这听起来会导致错过数据。

也许您的意思是使用WHERE`date` > $maxdate?如果是这样,你可以从给出的代码中找出答案。