MySQL:使用PHP一次一批选择行

MySQL:使用PHP一次一批选择行,php,mysql,select,Php,Mysql,Select,我试图做的是,我有一个表来为每个用户保留一行用户信息,并且我每天运行一个php脚本来填充从用户那里获得的信息。对于一个列,比如A列,如果我找到了信息,我会把它填上,否则我不会碰它,所以它会保持为空。原因是允许在信息可能可用时在下一次更新中更新它们 问题是我有太多的行要更新,如果我盲目地选择列A为空的所有行,那么结果将无法放入内存。如果我一次选择5000,那么在下一次选择5000时,我可以得到上次没有更新的行,这将是一个无限循环 有人知道怎么做吗?我没有ID列,所以我不能只说选择ID>X的位置。。

我试图做的是,我有一个表来为每个用户保留一行用户信息,并且我每天运行一个php脚本来填充从用户那里获得的信息。对于一个列,比如A列,如果我找到了信息,我会把它填上,否则我不会碰它,所以它会保持为空。原因是允许在信息可能可用时在下一次更新中更新它们

问题是我有太多的行要更新,如果我盲目地选择列A为空的所有行,那么结果将无法放入内存。如果我一次选择5000,那么在下一次选择5000时,我可以得到上次没有更新的行,这将是一个无限循环


有人知道怎么做吗?我没有ID列,所以我不能只说选择ID>X的位置。。。在MySQL端或php端有没有不修改表的解决方案?

您需要使用LIMIT和OFFSET关键字

SELECT [stuff] LIMIT 5000 OFFSET 5000;

LIMIT表示要返回的行数,OFFSET表示从表中读取的距离。

您需要使用LIMIT和OFFSET关键字

SELECT [stuff] LIMIT 5000 OFFSET 5000;

LIMIT表示要返回的行数,OFFSET表示从表中读取的距离。

因此不是标准化表。你想更新什么条件?请运行SHOW CREATE TABLE mytable\G并将其显示在问题正文中。是否有任何列可供排序和限制?@zod Ya因此,对于A列为空的所有行,我想进行搜索,看看是否有相关信息。如果我这样做了,我就填写那一行的A列,否则我就不碰它。@RolandoMySQLDBA谢谢你的回复,但非常抱歉,我宁愿不显示我的表的结构,因为它是我们的生产表。我知道你可能无法帮助我,但还是要谢谢你:所以不是标准化的表格。你想更新什么条件?请运行SHOW CREATE TABLE mytable\G并将其显示在问题正文中。是否有任何列可供排序和限制?@zod Ya因此,对于A列为空的所有行,我想进行搜索,看看是否有相关信息。如果我这样做了,我就填写那一行的A列,否则我就不碰它。@RolandoMySQLDBA谢谢你的回复,但非常抱歉,我宁愿不显示我的表的结构,因为它是我们的生产表。我知道你可能无法帮助我,但还是要谢谢你:这很有趣,所以我必须手动乘以每个循环中的偏移量?不一定。你可以在偏移量中放置一个表达式,比如5000*页。这很有趣,所以我必须在每个循环中手动乘以偏移量?不一定。您可以在偏移量中放置表达式,例如5000*页。