我正在使用PHP代码设置一个cron作业。我在使用mysql数据库来做一些功能。这里我有一个mysql查询的问题。
我正在获取行,基于限制和循环来执行某些操作。但我无法对所有行采取行动。那些不符合我的条件我只是跳过。
但是如果再次运行查询,我会得到早先出现的相同记录。
那么,我怎样才能跳过下一循环的行。我正在使用PHP和Mysql。
注意:我尝试过“NOT IN”,但它不适合我。因为我有100k的记录。
有不同的方法来实现这一点,我们在当前角色中使用的可靠工作方法是获取批次,然后使用最后一个条目的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等