我正在尝试找到一个解决方案,以便从有序列表中选择某个ID之后的行列表。
例如,首先我选择1000行。然后,在后续请求中,我想从第一个请求的最后一个id之后获取另外1000行。我知道我可以使用limit来实现它,但是假设在第一个和第二个请求之间添加了100行,将有来自第一个请求的100行。
两个查询都将按条目的日期排序。
以下是我想到的查询示例:
$query = "SELECT * FROM table WHERE id AFTER $id ORDER BY date DESC";
答案 0 :(得分:3)
$query = "SELECT * FROM `table` WHERE `id` > '$id' ORDER BY `date` DESC LIMIT 1000";
答案 1 :(得分:1)
两种方法:
"SELECT * FROM `table` WHERE `id` > '$id' ORDER BY `date` DESC LIMIT $length"
"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
?如果是这样,你可以从给出的代码中找出答案。