使用循环和限制跳过与mysql中的条件不匹配的一些行

时间:2019-03-26 11:39:13

标签: php mysql

我正在使用PHP代码设置cron作业。我正在使用mysql数据库来做一些功能。在这里,我有一个关于mysql查询的问题。

我正在获取行,基于限制并循环执行一些操作。但是我无法对所有行采取措施。那些与我的状况不符,只是我跳过了。

但是,如果再次运行查询,我将获得与之前相同的记录。

所以,我如何跳过该行进行下一个循环。 我正在使用PHP和Mysql。

注意:我尝试使用“ NOT IN”,但它不适合我。因为我有10万条记录。

1 个答案:

答案 0 :(得分:1)

有多种方法可以实现此目的,在我目前担任的可靠工作方式中使用的一种方法是获取批次,然后将上一个条目的ID用于下一个查询,例如:

 $sql =   "SELECT * FROM your table WHERE id > $id ORDER BY id ASC LIMIT 200"

$id = 0;
while(true) {
   PDO->execute($sql,bind->$id)//lets assume we bind this param correctly and execute the query safely

   $result = $pdo->fetchAll()

   if(sizeof($result) == 0) break;//exit the loop when you've reached the end

   //do your conditions and do what ever you need to do

  $id = end($result)->id/end($result)["id"] (depending on your fetch attr)
}

然后它将连续循环遍历您的表,直到出现中断时返回空结果集。当然,您可以添加其他条件来突破,我们通常会使用更高批次的cron等