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

问题描述 投票:-2回答:1

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

我正在获取行,基于限制和循环来执行某些操作。但我无法对所有行采取行动。那些不符合我的条件我只是跳过。

但是如果再次运行查询,我会得到早先出现的相同记录。

那么,我怎样才能跳过下一循环的行。我正在使用PHP和Mysql。

注意:我尝试过“NOT IN”,但它不适合我。因为我有100k的记录。

php mysql
1个回答
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等

© www.soinside.com 2019 - 2024. All rights reserved.